Dom4j解析XML应用总结

最近在工作中,频繁用到解析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返回。
二. 具体例子
 
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>

  2.测试代码:
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");
    }
}

运行结果:
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
 

你可能感兴趣的:(xml,工作)