xml格式如下:<DSExport><Header>aa</Header><Job><Record>  <Property Name="Name">1111</Property>  <Property Name="NextID">2222</Property>  <Property Name="Container">3333</Property>  <Property Name="JobVersion">44444</Property>  <Property Name="ControlAfterSubr">55555</Property>  <Collection Name="Parameters" Type="Parameters">     <SubRecord>        <Property Name="Name">TBS</Property>        <Property Name="Prompt">TBS 参数</Property>        <Property Name="Default">(As pre-defined)</Property>        <Property Name="HelpTxt">表空间</Property>        <Property Name="ParamType">13</Property>        <Property Name="ParamLength">0</Property>        <Property Name="ParamScale">0</Property>    </SubRecord>        <SubRecord>        <Property Name="Name">EDCDB</Property>        <Property Name="Prompt">EDCDB 参数</Property>        <Property Name="Default">(As pre-defined)</Property>        <Property Name="ParamType">13</Property>        <Property Name="ParamLength">0</Property>        <Property Name="ParamScale">0</Property>    </SubRecord>  </Collection>  <Collection Name="MetaBag" Type="MetaProperty">     <SubRecord>        <Property Name="Owner">APT</Property>        <Property Name="Name">AdvancedRuntimeOptions</Property>        <Property Name="Value">#DSProjectARTOptions#</Property>     </SubRecord>     <SubRecord>         <Property Name="Owner">APT</Property>         <Property Name="Name">TraceMode</Property>         <Property Name="Value">0</Property>      </SubRecord>    </Collection>  <Property Name="IsTemplate">0</Property>  <Property Name="NLSLocale">,,,,</Property>  <Property Name="JobType">3</Property> </Record><Record>.....<!--和上面<Record>节点内容形式一样></Record></Job><Job>.....<!--和上面<Job>节点内容形式一样></Job><Job>.....<!--和上面<Job>节点内容形式一样,多个重复Job节点></Job></DSExport> 现在需要获取DSExport根节点下的Job节点的Record节点下的Property节点的Name属性值和具体的值以及Collection节点下SubRecord节点下的Property节点的Name属性值和具体的值,请问用dom4j改如何解析,最好能附上代码,谢谢了!

解决方案 »

  1.   

    SAXReader saxReader = new SAXReader();
            try {
                Document document = saxReader.read(new File("C:\\aa.xml"));
                List list = document.selectNodes("//Record/Property/@Name");
                Iterator iter=list.iterator();
                while(iter.hasNext()){
                    Attribute attribute=(Attribute)iter.next();
                    System.out.println("Name:"+ attribute.getValue() + ";Content" + attribute.getParent().getText());
                }            list.clear();
                list = document.selectNodes("//SubRecord/Property/@Name");
                Iterator iter2=list.iterator();
                while(iter2.hasNext()){
                 Attribute attribute=(Attribute)iter2.next();
                  System.out.println("Name:"+ attribute.getValue() + ";Content" + attribute.getParent().getText());
                }
            } catch (DocumentException e) {
                e.printStackTrace();
            }