簡體   English   中英

如何使用DOM解析器按XML名稱訪問子節點?

[英]How to access child nodes by name in XML using DOM parser?

我有以下格式的xml文件:

....
<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:abc”是可選的。 我想為所有人獲得“ 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()
}

但是正如您所看到的,對於第二人稱節點。.由於“ ecs:abc”不存在,因此“ ecs:def”將位於第0位。 那么,有什么方法可以按名稱而不是按位置獲取各個“ ecs:Person”節點的子節點?

1查找getElementsByTagName(“ ecs: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;

不要使用索引0、1 ...

每個內部2個,查找getElementsByTagName(“ ecs:def”)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM