仅查找第一组XML(DOM)

时间:2013-12-12 11:11:29

标签: java android xml dom

我有以下XML结构:

<doc>
    <group name="name1">
        <group name="subname1">
            <item att="att1"/>
        </group>
        <group name="subname3">
            <item att="att3"/>
        </group>
    </group>
    <group name="name2">
        <group name="subname2">
            <item att="att2"/>
        </group>
    </group>
</doc>

如果我正在使用dom.getDocumentElement().getElementsByTagName("group"),那么我将得到xmlfile的所有“组”(name1,subname1,subname3,.......)。

如何只找到第一组(name1和name2)?

3 个答案:

答案 0 :(得分:2)

试试这个:

dom.getDocumentElement().getElementsByTagName("group")[0];

答案 1 :(得分:0)

试试这个..

NodeList nodeList = doc.getElementsByTagName("doc");
for (int i = 0; i < nodeList.getLength(); i++) 
{                   
      Node node = nodeList.item(i); 

      if(node.getNodeType() == Node.ELEMENT_NODE)
      {
           Element e = (Element) node;
           NodeList resultNodeList = e.getElementsByTagName("group");
           int resultNodeListSize = resultNodeList.getLength();
           for(int j = 0 ; j < resultNodeListSize ; j++ )
           {
                 Node resultNode = resultNodeList.item(j);
                 Element fstElmnt1 = (Element) resultNode.getParentNode();
                 Log.v("name--", ""+ ( fstElmnt1.getAttribute("name")));
           }
      }
}

答案 2 :(得分:0)

您可以按照here的说明使用XPath,并使用像此/doc/group/@name = 'name1' or /doc/group/@name = 'name2'这样的XPath表达式来仅检索具有set属性字段“name”的组,该名称等于name1或{{ 1}}。

如果您只想提取name2子项的组标记,则XPath表达式会缩短为doc。如果它们被定义为XML中/doc/group的子级,则还会自动检索<group name="name3"><group name="name4">