私は基本的にSOAP WebサービスのXML結果であるDomDocumentを処理しています。アイデアを与えるために、これは次のようになります
...<ParentNode><ChildNode><output><escaped<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値が返されることがわかります。ここに文字列があり、コンソール出力で確認できます。しかし、ここで私が見逃しているトリックはわかりません。出力をエスケープすると、特定の方法でそれが台無しになりますか?
ありがとう、パリヤット
getTextContent()
ではなくgetNodeValue()
が必要です。後者は常に要素ノードに対してnullを返します。
の代わりに
rows[i].getNodeValue()
使用する
rows[i].getNodeValue().getChildNodes().item(0).getNodeValue()