Dom4j解析XML应用总结

[size=large]最近在工作中,频繁用到解析XML,在这里顺便总结一下,为后续更复杂的内容做点准备:
一.最常用到的API
1.getRootElement():隶属于Document类,返回XML文档的根元素
setRootElement(Element rootElement) :设置给定元素为相应文档的根元素
2.asXML():隶属于Node类,用于将XML转换为String
3.DocumentHelper类常用API:
createDocument():创建一个Document对象
parseText(String text):解析给定Xml的文本,生成Document对象。
 3.Element类中常用到API
attributeValue(String name) :获取元素String值。
elementIterator() :返回元素的所有子元素的Iterator迭代器。
elements() :返回元素包含所有子元素List。
getParent() :获取父元素Element。
getPath() :获取自己的xpath。
detach() :移除自己。
getName() :获取节点的名称。
selectNodes(String xpathExpression) :通过XPATH获取节点。
selectSingleNode(String xpathExpression) :通过XPATH获取一个节点。
getDocument() :作为一个Document返回。
二. 具体例子[/size]
1.XML文件内容:
<?xml version="1.0" encoding="utf-8"?>
<students>
<student id="1" sex="female">
<name>zhangsan</name>
<age>21</age>
<address>
<add code="home">zhengzhou</add>
<add code="company">HIST</add>
</address>
</student>
<student id="2" sex="male">
<name>wangwu</name>
<age>16</age>
<address>
<add code="home">beijing</add>
<add code="company">dongzhi</add>
</address>
</student>
</students>

[size=large]2.测试代码:[/size]

public class ParseXmlExample {
public void parseXmlDoc(String xmlFile){
SAXReader saxReader=new SAXReader();
Document doc=null;
try {
doc=saxReader.read(ParseXmlExample.class.getResourceAsStream(xmlFile));
} catch (DocumentException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
Element rootElement=doc.getRootElement();
for(Iterator iterator=rootElement.elementIterator();iterator.hasNext();){
Element e_stu=(Element)iterator.next();
String student=e_stu.getName();
String id=e_stu.attributeValue("id");
String sex=e_stu.attributeValue("sex");
String name=e_stu.element("name").getText();
Element address=e_stu.element("address");
StringBuilder sb=new StringBuilder();
sb.append(student+"\n");
sb.append("\t"+"id:"+id+"\t"+"sex:"+sex+"\n");
sb.append("\t"+"name:"+name+"\n");
sb.append("\t"+address.getName()+"\n");
for(Iterator ad=address.elementIterator();ad.hasNext();){
Element e_com=(Element)ad.next();
String code=e_com.attributeValue("code");
String value=e_com.getText();
sb.append("\t\t"+code+":"+value+"\n");
}
System.out.println(sb.toString());
}
}
public static void main(String[] argv){
new ParseXmlExample().parseXmlDoc("students.xml");
}
}

[size=large]运行结果:[/size]
student
id:1 sex:female
name:zhangsan
address
home:zhengzhou
company:HIST

student
id:2 sex:male
name:wangwu
address
home:beijing
company:dongzhi


Process finished with exit code 0
微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值