[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文件内容:
[size=large]2.测试代码:[/size]
[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
一.最常用到的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