web-dev-qa-db-ja.com

DOMDocument getNodeValue()はnullを返します(出力エスケープ文字列が含まれます)

私は基本的にSOAP WebサービスのXML結果であるDomDocumentを処理しています。アイデアを与えるために、これは次のようになります

...<ParentNode><ChildNode>&lt;output&gt;&lt;escaped&lt;string</ChildNode></ParentNode>...

はい、ChildNodeの値は出力エスケープされた文字列であり、このXML内にパックされたXMLです。次のようなDomDocument処理の通常の実行を行います

NodeList rows = dom.getElementsByTagName(ChildNode);
for(int i=0;i<rows.length;i++)
{
  System.out.println(rows[i].getParentNode()); // returns ParentNode
  System.out.println(rows[i].getNodeName()); // returns ChildNode
  System.out.println(rows[i].getNodeValue()); // returns null
}

上記のコードを調べると、ParentNodeおよびNodeNameノードの正しい値がノードから返されても、getNodeValue()にアクセスするとnull値が返されることがわかります。ここに文字列があり、コンソール出力で確認できます。しかし、ここで私が見逃しているトリックはわかりません。出力をエスケープすると、特定の方法でそれが台無しになりますか?

ありがとう、パリヤット

24
user1020069

getTextContent()ではなくgetNodeValue()が必要です。後者は常に要素ノードに対してnullを返します。

53
Ian Roberts

の代わりに

rows[i].getNodeValue()

使用する

rows[i].getNodeValue().getChildNodes().item(0).getNodeValue()
0
Mike-Bell