dom4j解析xml详解

dom4j解析xml

在Java后台开发中有时候会碰到解析xml文件的节点、属性等需求,一般比较方便的方法是采用dom4j进行解析。
首先是需要解析的xml文件,文件内容如下



<UDXZip> 
  <Name> 
    <add value="SlopeLimitation.xml"/> 
  Name>  
  <DataTemplate type="schema"> 
    <UdxDeclaration> 
      <UdxNode1> 
        <UdxNode name="slope_limitation" type="DTKT_INT | DTKT_LIST" description="slope_limitation"/> 
      UdxNode1> 
    UdxDeclaration> 
  DataTemplate>
UDXZip>

通过Document 来读取xml,并获取根元素

//将string串读取为xml
 Document configXML = DocumentHelper.parseText(content.toString());
 //获取根元素
Element root = configXML.getRootElement();

此时,获取的根元素root即为xml中对应的UDXZip元素,取节点以及属性值时通过.element()和.attributeValue()来获取。

  • 对于示例中的xml文件来说,root中的element元素有两个,包括Name与DataTemplate
    • Name的element元素包括add元素,Name节点无attribute。add元素无element,但是包含属性“value””,attribute为.attributeValue(“value”)为SlopeLimitation.xml
    • DataTemplate包含属性以及子元素。属性为type,子元素为UdxDeclaration
      • UdxDeclaration包含子元素,但不包含属性值。子元素为UdxNode1
        • UdxNode1不包含属性值,包含子元素,子元素为UdxNode
          • UdxNode 不包含子元素,包含三个属性。均可通过.attributeValue(“属性名”)取得。下面是示例代码
//取DataTemplate节点的type值,为schema
dataTemplate = root.element("DataTemplate").attributeValue("type");
//取UdxNode节点的几个属性值,分别是slope_limitation、DTKT_INT | DTKT_LIST以及slope_limitation
dataTemplate = root.element("DataTemplate").element("UdxDeclaration").element("UdxNode1").element("UdxNode").attributeValue("name");
dataTemplate = root.element("DataTemplate").element("UdxDeclaration").element("UdxNode1").element("UdxNode").attributeValue("type");
dataTemplate = root.element("DataTemplate").element("UdxDeclaration").element("UdxNode1").element("UdxNode").attributeValue("description");

通过以上方法,即可获得xml的各种数据

你可能感兴趣的:(后端)