`

Dom4j解析xml

    博客分类:
  • XML
 
阅读更多
src目录下data-sources.xml文件:<?xml version = '1.0'?>
<DataSource>
<param database="mysql" version="5.0">
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://localhost:3306/j1101</url>
<user>root</user>
<password>root</password>
</param>

<param database="Oracle" version="10G">
<driver>oracle.jdbc.driver.OracleDriver</driver>
<url>jdbc:oracle:thin:@127.0.0.1:1521:orcl</url>
<user>test</user>
<password>test</password>
</param>

</DataSource>

dom4解析例子:
/*采用dom4j 的api来完成操作xml的功能
* */
public class Dom4jDemo {
/* 解析xml文件 */
public void parse() {
SAXReader reader = new SAXReader();
try {
// 创建Document文档对象
Document document = reader.read("data-sources.xml");
// 根据document获取root element (根元素,根节点)
Element root = document.getRootElement();
System.out.println("root-->" + root.getName());
// 根据 root 根节点去获取 子节点(子元素)
List<Element> paramList = root.elements(); // 获取到 param这一级子节点
for (Element param : paramList) {
// 去获取当前节点的全部属性,保存在一个集合中,集合中每个元素都是Attribute(属性)
List<Attribute> paramAttribute = param.attributes(); // 获取到这里来<param
// database="mysql"
// version="5.0">
for (Attribute a : paramAttribute) {// 遍历获取属性的名字以及属性的值
System.out.println("属性:" + a.getName() + "\t 属性值: "
+ a.getValue());
}
// 去获取当前param节点下的子节点
List<Element> childList = param.elements();
for (Element e : childList) {
// 获取子节点中的所有的值
System.out.println("--------元素名:" + e.getName() + "\t 元素值:"
+ e.getText());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

/*
* 采用dom4j实现添加xml文件
*/
public void testAdd() {
// 创建Document文档对象
Document document = DocumentHelper.createDocument();
// 创建根节点
Element root = document.addElement("DataSource");
// 创建 param节点
Element param = root.addElement("param"); //// 将param添加到根节点
// 为param这个节点添加属性
param.addAttribute("database", "mysql");
param.addAttribute("version", "5.0");
// 为param添加子节点
param.addElement("driver").setText("com.mysql.jdbc.Driver");
param.addElement("url").setText("3456789fghjklcvbnm,.fghjklg");
param.addElement("user").setText("root");
param.addElement("password").setText("root");
// 输出
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("gb2312");
XMLWriter writer;
try {
writer = new XMLWriter(new FileOutputStream("dom4j-test.xml"),
format);

writer.write(document);//写文件
writer.close();//关闭
System.out.println("成功编写xml文件 ");
} catch (Exception e) {
System.out.println("失败了");
e.printStackTrace();
}
}

    /*
     * 修改xml文件
     * */
public void testUpdate(){
//构造SAXReader对象
SAXReader reader=new SAXReader();
try {//创建Document文档对象
Document document=reader.read("dom4j-test.xml");
//获取根节点
Element root=document.getRootElement();
//获取到param这个节点下的所有
List<Element> paramList=root.elements("param");
for(Element child : paramList){
//判断是否是 mysql这个节点
if("mysql".equals(child.attributeValue("database"))){
  child.element("url").setText("jdbc:mysql://localhost:3306/j1101");
  child.attribute("version").setText("5.5");
List<Element> childList= child.elements();
// child.remove(child.element("user")); 删除指定的元素名对应的节点
for(Element c : childList){
//如果是user这个元素或者是password这个元素那么就删除
if("user".equals(c.getName()) || "password".equals(c.getName())){
child.remove(c); //删除元素
}
}
 
}
}
// 输出
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("gb2312");
XMLWriter writer;

writer = new XMLWriter(new FileOutputStream("dom4j-test.xml"),
format);

writer.write(document);//写文件
writer.close();//关闭
System.out.println("修改编写xml文件 ");

} catch (Exception e) {
System.out.println("修改xml文件  失败");
e.printStackTrace();
}
}
public static void main(String[] args) {
Dom4jDemo d = new Dom4jDemo();
//d.parse();
d.testUpdate();
}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics