0

アプリでdomパーサーを使用しています。そう。次の状況があります:

XML:

<test>
    <A>
      <B>hello</B>
    world
    </A>
</test>

コード:

private TagA parseTagA(Node node) {
        TagA tagA = new TagA();
        if (node.hasChildNodes()) {
            NodeList childList = node.getChildNodes();
            for (int i = 0; i < childList.getLength(); i++) {
                // gets child
                Node child = childList.item(i);
                // parse <B> tag
                if (child != null && "B".equals(child.getNodeName())) {
                   tagA.setTagB(parseTagB(child));
                }
            }
        }

        String tagABody = node.getTextContent();
        tagA.setBody(tagABody);


        return tagA;
    }

node.getTextContent() メソッドを使用してタグ A の値を取得しますが、タグ B の値も取得します。「tagABody」の値は「hello world」ですが、単に「world」にする必要があります。メソッド getNodeValue() は null を返します。ノード タイプが ELEMENT_NODE であるためだと思います。とにかく質問があります:タグAのみ、「世界」のみの値を取得するにはどうすればよいですか? ありがとう。

4

2 に答える 2

1

私はそれをテストしませんでしたが、以下のコードが機能するはずです。

private TagA parseTagA(Node node) {
    TagA tagA = new TagA();
 String tagABody  = "";
    if (node.hasChildNodes()) {
        NodeList childList = node.getChildNodes();
        for (int i = 0; i < childList.getLength(); i++) {
            // gets child
            Node child = childList.item(i);
        if(child.getNodeType == Node.TEXT_NODE) {
           tagABody = node.getNodeValue();
           tagA.setBody(tagABody);
            } else
            // parse <B> tag
            if (child != null && "B".equals(child.getNodeName())) {
               tagA.setTagB(parseTagB(child));
            }
        }
    }


    return tagA;
}
于 2013-06-13T21:31:54.877 に答える
0

要素のテキスト ノードの子を処理することをお勧めしますA

とにかくやっている子ノードのループでこれを行うことができます。あなたのifタグを識別するには、非テキストを蓄積する があります。BelseB

于 2013-06-13T21:29:49.207 に答える