首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用DOM解析器按名称访问XML子节点?

问如何使用DOM解析器按名称访问XML子节点?
EN

Stack Overflow用户
提问于 2015-12-07 17:58:13
回答 1查看 4.3K关注 0票数 0

我有一个xml文件,格式如下:

代码语言:javascript
复制
....
<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“的价值。为此,我考虑采取以下办法:

代码语言:javascript
复制
....
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 "ecs:abc“不存在,所以"ecs:def”将位于第0位。那么,有什么方法可以让我得到的子节点的名称,而不是位置各自的"ecs:Person“节点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-07 18:00:38

1寻找getElementsByTagName("ecs:Person")

代码语言:javascript
复制
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")

代码语言:javascript
复制
       // DO IT AGAIN: 
       eElement.getElementsByTagName("ecs:def");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34140104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档