关于在JAVA 中DOM4j解析XML的有关问题

关于在JAVA 中DOM4j解析XML的问题
本帖最后由 nihao6154 于 2014-04-26 21:30:56 编辑

<FieldArray 报表名="措施项目清单计价表(二)" Format="数据表">
      <FIELD Index="0" Name="序号" Title="序号" Type="小数" GroupID="-1" />
      <FIELD Index="1" Name="项目名称" Title="项目名称" Type="小数" GroupID="-1" />
      <FIELD Index="2" Name="项目特征" Title="项目特征" Type="小数" GroupID="-1" />
      <FIELD Index="3" Name="计量单位" Title="计量单位" Type="小数" GroupID="-1" />
      <FIELD Index="4" Name="工程量" Title="工程量" Type="字符串" GroupID="-1" />
      <FIELD Index="5" Name="" Title="单价" Type="分组头" GroupID="-1" />
      <FIELD Index="6" Name="单价.综合单价" Title="综合单价" Type="字符串" GroupID="5" />
      <FIELD Index="7" Name="" Title="其中" Type="分组头" GroupID="5" />
      <FIELD Index="8" Name="单价.人工费" Title="人工费" Type="字符串" GroupID="7" />
      <FIELD Index="9" Name="单价.材料费" Title="材料费" Type="字符串" GroupID="7" />
      <FIELD Index="10" Name="单价.机械费" Title="机械费" Type="字符串" GroupID="7" />
      <FIELD Index="11" Name="" Title="合价" Type="分组头" GroupID="-1" />
      <FIELD Index="12" Name="合价.合计" Title="合计" Type="字符串" GroupID="11" />
      <FIELD Index="13" Name="" Title="其中" Type="分组头" GroupID="11" />
      <FIELD Index="14" Name="合价.人工费" Title="人工费" Type="字符串" GroupID="13" />
      <FIELD Index="15" Name="合价.材料费" Title="材料费" Type="字符串" GroupID="13" />
      <FIELD Index="16" Name="合价.机械费" Title="机械费" Type="字符串" GroupID="13" />
    </FieldArray>


这是XML文件的一部分,我截取下来了,是个报表的XML,截取的部分是表头,问题是这样的,我现在需要解析这样的文件,利用DOM4J是可以解析的,查过资料,但是截取的文件有子节点,比如其中是分组头,其中下包括人工费,材料费,和机械费,这样的话应该如何解析它,大神们帮帮忙,最好能写个例子,mian函数,能测试解析结果的,在这里先谢谢你们了
------解决方案--------------------
    public static void main(String[] args) throws XPathExpressionException,
            ParserConfigurationExceptionSAXExceptionIOException
    {
        DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
        domFactory.setNamespaceAware(true);// never forget this!
        DocumentBuilder builder = domFactory.newDocumentBuilder();
        Document doc = builder.parse("D:\\1.xml");
        // 先取根
        String itemStr = "//FieldArray/FIELD[@GroupID=-1]";
        XPathFactory factory = XPathFactory.newInstance();
        XPath xpath = factory.newXPath();
        XPathExpression expr = xpath.compile(itemStr);
        Object result = expr.evaluate(doc, XPathConstants.NODESET);
        NodeList nodes = (NodeList) result;
        for (int i = 1; i <= nodes.getLength(); i++)
        {
            expr = xpath.compile("//FieldArray/FIELD[@GroupID=-1][position()="
                    + i + "]/@Index");
            Object index_id = expr.evaluate(doc, XPathConstants.STRING);
            System.out.println("我是父节点,id=" + index_id.toString());
            // 得到子节点
            getSon("//FieldArray/FIELD[@GroupID=" + index_id.toString() + "]",
                    doc, xpath);
        }
    }

    public static void getSon(String url, Document doc, XPath xpath)
            throws XPathExpressionException