android:在不同级别解析具有相同节点名的嵌套xml

时间:2014-01-07 13:50:45

标签: android xml-parsing

在xml文件中,有不同级别的同名节点。我如何根据水平或父母来区分

<account email="psuraj@isaacdanielgroup.com" >

<contacts>

    <contact>
        <id>
        0
        </id>
    </contact>
    <contact>
        <id>
         1
        </id>
    </contact>
    <contact>
        <id>
         2
        </id>
    </contact>
</contacts>

<groups>

    <group>

        <groupname>
         xyz

        </groupname>

        <members>

            <contact>

                <id>
                 7

                </id>
            </contact>

            <contact>

                <id>
                 8
                </id>
            </contact>
        </members>
    </group>
</groups>

这里我在联系人和群组下有联系 - &gt; group-&gt; memebers 我需要区分它们 如果我尝试

doc.getElementsByTagName("contact");

它将返回所有级别的所有联系节点。 这不是必需的。我需要单独联系下面的联系人和单独的联系人。

请帮忙。

1 个答案:

答案 0 :(得分:1)

使用DOM XML技术,您可以通过XPATHExpression提取NodeSet:

   String path = "//account/groups/group/members/contact";
   XPath xpath = XPathFactory.newInstance().newXPath();
    XPathExpression expr1;
    try {
        expr1 = xpath.compile(path);
        return (NodeList)expr1.evaluate(doc, XPathConstants.NODESET);
    } catch (XPathExpressionException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;
    }

这将只返回群组内的联系