5

次のようなXMLファイルがあります。

を使用すると、 withgetElementsByTagName("LEVEL2_ID")が取得されますが、これらのノードの値はNULLです(つまり、各結果ノードで)が返されます。どうしてこれなの?この場合、各ノードのコンテンツ値を取得する必要があります。NodeListNodesgetNodeValue()NULL2000

XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root>
    <Date>01/17/2012</Date>
    <LEVEL1>
        <LEVEL1_ID>1000</LEVEL1_ID>

        <LEVEL2>
           <LEVEL2_ID>2000</LEVEL2_ID>
        </LEVEL2>
    </LEVEL1>
</Root>

Javaでは、getElementsByTagName()で取得した最初のノードの値を出力するとNULLが返されます。

NodeList nodes = document.getElementsByTagName("LEVEL2_ID");

System.out.println("Value of 1st node: " + nodes.item(0).getNodeValue());
4

2 に答える 2

8

それは仕様で定義されています。要素ノードnodeValuenullです。

nodeValueタイプのDOMString:タイプに応じた、このノードの値。上記の表を参照してください。nullと定義されている場合、設定しても効果はありません。

各ノードのテキストコンテンツを取得する場合は、すべてのテキストノードの子孫を反復処理し、それらの値を連結する必要があります。

とはいえ、使用しているAPI実装は、要素のテキストコンテンツを直接取得するメソッドを提供する場合があります。たとえば、PHPDOMNodeには$textContentプロパティがあります。

あなたの場合のように、要素の唯一の子が実際に必要なテキストノードである場合は、その値にアクセスするだけです。

element.getFirstChild().getNodeValue()
于 2012-01-19T18:00:57.367 に答える
4

要素ノードがあり、その内部テキストを取得したい場合は、次のgetTextContent()ように使用します。

NodeList nodes = document.getElementsByTagName("LEVEL2_ID");
System.out.println("Value of 1st node: " + nodes.item(0).getTextContent());
于 2012-01-19T18:37:00.990 に答える