为什么DOM会这样做? (错误的nodeName XML)

时间:2015-09-29 14:06:20

标签: java xml dom

我有这个XML(只是一小部分......完整的xml很大)

<Root>
  <Products>
    <Product ID="307488">
      <ClassificationReference ClassificationID="AR" Type="AgencyLink"/>
      <ClassificationReference ClassificationID="AM" Type="AgencyLink">
        <MetaData>
            <Value AttributeID="tipoDeCompra" ID="C">Compra Centralizada</Value>
        </MetaData>
      </ClassificationReference>
      </Product>
  </Products>
</Root>

嗯......我想从行中获取数据

<Value AttributeID="tipoDeCompra" ID="C">Compra Centralizada</Value>

我正在使用DOM,当我使用 nodoValue.getTextContent()时,我得到了“Compra Centralizada”,这很好......

但是当我使用 nodoValue.getNodeName()时,我得到了“MetaData”,但我期待“价值”

这种行为的解释是什么?

谢谢!

3 个答案:

答案 0 :(得分:2)

您的nodeValue变量很可能指向MetaData节点,因此返回的名称是正确的。

请注意,对于元素节点Node.getTextContent(),将返回所有子节点的文本内容的连接。因此,在您的示例中,MetaData元素的文本内容等于Value元素的文本内容,即Compra Centralizada

答案 1 :(得分:1)

我猜你正在使用getElementsByTagName获取Node对象(&#34; MetaData&#34;)。在这种情况下,nodoValue.getTextContent()将正确返回文本内容,但是获取获取子节点所需的节点名称。

答案 2 :(得分:0)

您当前的节点必须是MetaData,getTextContent()将在其开始和结束标记内提供所有文本。这是因为你得到了

  

Compra Centralizada

作为价值。你应该使用getChildNodes()获得第一个孩子,然后获得Value标签。