我有这个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”,但我期待“价值”
这种行为的解释是什么?
谢谢!
答案 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标签。