0
XMLノードから値を取り出し、CDATAセクションの問題で実行しようとしています。このコードでノードがCDATAセクションかどうかを確認
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>
<Test>This is my node</Test>
<HelpContent><![CDATA[this is the CDATA section]]></HelpContent>
</root>
:
私のXMLは次のようになり
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(currentFile);
XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xpathObj = xPathFactory.newXPath();
XPathExpression expr = xpathObj.compile("//*");
NodeList nodes = (NodeList)expr.evaluate(doc, XPathConstants.NODESET);
int len = nodes.getLength();
for (int i = 0; i < len; i++){
Node node = nodes.item(i);
System.out.println("Node name [" + node.getNodeName() + "] of type [" + node.getNodeType() + "]");
System.out.println("NodeValue: " + node.getNodeValue());
System.out.println("TextContent: " + node.getTextContent());
}
私は次のように得た:
> Node name [root] of type [1]
> NodeValue: null
> TextContent: This is my
> node this is the CDATA section
>
> Node name [Test] of type [1]
> NodeValue: null
> TextContent: This is my node
>
> Node name [HelpContent] of type [1]
> NodeValue: null
> TextContent: this is the CDATA section
あなたが子を持つノードのために、見ることができるように(この場合はルートのみです)子ノードからすべてのテキストを抽出しました。 さらに、getNodeTypeは常に1(ELEMENT_NODE)に戻ります。
質問「Test」や「TextContent」のようなデータが含まれていてもノードの値が空であるかnullの場合のみノードの値を取得できますか"ルート"?
ありがとうございます。
可能な重複? ](https://stackoverflow.com/questions/568315/how-do-i-retrieve-element-text-inside-cdata-markup-via-xpath) –
リンクされた複製は、XPathが 'CDATA'ノードを無視することを説明しています。 XPathを使用する代わりにDOMを歩くと、それらを見つけることができるはずです。 –
要素nodeの 'node.getNodeValue()'はnullです。 https://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68D080。最小限の完全なサンプルを表示して、得た結果を再現できるようにして、代わりに期待する結果の説明と一緒に表示することもできます。 –