2014-01-07 2 views
0

в файле xml есть узлы с одинаковым именем на разных уровнях. Как я могу отличить на основе Leve или родителюandroid: разбор вложенных xml с тем же именем узла на разных уровнях

<account email="[email protected]" > 

<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> 

здесь у меня есть контакт под контактами, а также по группам -> группы-> ЧЛЕНОВ Мне нужно различать между ними если я попробовать

doc.getElementsByTagName("contact"); 

он вернет все контактные узлы всех уровней. Это не то, что требуется. Мне нужно связаться с контактными контактами отдельно и по отдельности.

Пожалуйста, помогите.

ответ

1

с использованием технологии DOM XML вы можете извлечь NodeSet по среднему XPathExpression:

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; 
    } 

это будет возвращать только контакт внутри группы

Смежные вопросы