2015-12-07 2 views
0

У меня есть файл XML в следующем формате:Как получить доступ к дочерним узлам по имени в XML, используя парсер DOM?

.... 
<ecs:Person> 
    <ecs:abc>1234</ecs:abc> 
    <ecs:def>9090</ecs:def> 
</ecs:Person> 
<ecs:Person> 
    <ecs:def>1010</ecs:def> 
</ecs:Person> 
... 

Из выше XML, мы можем понять, что узел «НКА: а» не является обязательным. Я хочу получить значение «ecs: def» для всех людей. Для этого я думал следовать ниже подход:

.... 
int len = d.getElementsByTagName("ecs:Person").getLength(); 
for(int i=0;i < personLen;i++){ 
    print d.getElementsByTagName("ecs:Person").item(j).getChildNodes().item(1).getTextContent() 
} 

Но как вы можете видеть, на вторые человек node..as «ЭКС: а» нет так «ЭКС: DEF» будет 0-й позиции. Итак, есть ли способ, с помощью которого я могу получить дочерние узлы по имени не по позиции для соответствующего узла «ecs: Person»?

ответ

1

1 ищет getElementsByTagName ("ЭКС: Person")

import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 

NodeList nList = d.getElementsByTagName("ecs:Person"); 

for (int temp = 0; temp < nList.getLength(); temp++) 
    { 
    Node nNode = nList.item(temp); 
    if (nNode.getNodeType() == Node.ELEMENT_NODE) 
     { 
     Element eElement = (Element) nNode; 

Dont использование индекса 0, 1, ...

2 внутри каждого из них, обратите внимание на getElementsByTagName ("ЭКС: DEF")

 // DO IT AGAIN: 
     eElement.getElementsByTagName("ecs:def"); 
+0

Можете ли вы дать правильный синтаксис? Потому что для элемента дочернего узла в eclipse я не получаю функцию «getElementsByTagName» – Madhusudan

+0

@Madhusudan, см. Мой код –

+0

Спасибо. Это работает :) Большое спасибо за вашу помощь :) – Madhusudan

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