Dom4j解析xml

[b]src目录下data-sources.xml文件:[/b]<?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>

[b]dom4解析例子:[/b]
/*采用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();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值