JavaDOM:getElementsByTagName()&x27;具有空值的子节点

JavaDOM:getElementsByTagName()&x27;具有空值的子节点,java,dom,w3c,Java,Dom,W3c,我看到了W3CDOM库for Java的一种奇怪行为。对于已格式化的XML,我运行document.getElementsByTagName().getItem(0).getChildNodes()获取标记的一个子节点。下面是我的标签的外观: <References> <Reference Name="a" Value="1"/> <Reference Name="b" Value=&quo

我看到了W3CDOM库for Java的一种奇怪行为。对于已格式化的XML,我运行document.getElementsByTagName().getItem(0).getChildNodes()获取标记的一个子节点。下面是我的标签的外观:

<References>
    <Reference Name="a" Value="1"/>
    <Reference Name="b" Value="2"/>
    <Reference Name="c" Value="3"/>
    <Reference Name="d" Value="4"/>
    <Reference Name="e" Value="5"/>
    <Reference Name="f" Value="6"/>
    <Reference Name="g" Value="7"/>
    <Reference Name="h" Value="8"/>
    <Reference Name="i" Value="9"/>
    <Reference Name="j" Value="10"/>
    <Reference Name="k" Value="11"/>
    <Reference Name="l" Value="12"/>
</References>

下面是我的代码:

NodeList nodeList = document.getElementsByTagName("References").item(0).getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
    NamedNodeMap currentItemAttributes = nodeList.item(i).getAttributes();
    String currentItemName = currentItemAttributes.getNamedItem("Name").getNodeValue();
    name=currentItemName;
}
NodeList NodeList=document.getElementsByTagName(“引用”).item(0.getChildNodes();
for(int i=0;i
这里,我为每个备用节点获取空值,如下所述:

nodeList.item(0).getAttributes()
返回
null

nodeList.item(1).getAttributes().getNamedItem(“名称”).getNodeValue()返回
a

nodeList.item(2).getAttributes()
返回
null

nodeList.item(3).getAttributes().getNamedItem(“Name”).getNodeValue()返回
b

等等

有趣的是,如果我将xml文件缩小到一行并删除所有多余的空格,它就可以正常工作,并且不会得到alternate
null


如果有人能给我一个解决方案,那将是一个很大的帮助。

这是因为getChildNodes()正在获取所有节点

试一试


或者,您可以检查每个节点的类型(元素)和名称(引用),然后对其进行处理。

文件中的空白将创建额外的节点,忽略它们。
document.getElementsByTagName("References").item(0).getElementsByTagName("Reference");