如何使用 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");
我有一个 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");