1

SAX-Parser を使用して XML を解析し、特別なコンテンツを含むノードを見つけたいと考えています。

XML の例:

<root>
     <someElement>
            #hashKey1
     </someElement>
     <someElement>
            value1
     </someElement>
     <someElement>
            #hashKey2
     </someElement>
     <someElement>
            value2
     </someElement>
     <someElement>
            #hashKey3
     </someElement>
     <someElement>
            value3
     </someElement>
</root>

問題は、コンテンツが含まれているノード/要素の種類がわからないことです。コンテンツを含む最初の要素/ノードを見つけたいだけです。

独自の関数「findNodeByContent」を作成する必要がありますか、またはそのような関数を提供する SAX-Parser 実装はありますか?

4

3 に答える 3

2

SAX の代わりに JDK の Xpath サポートを使用します。この式で要素を見つけることができます

//*[contains(text(), 'value2')]

テキスト 'value2' を含むテキスト ノードを持つすべての要素が検索されます。

サンプルコードは次のとおりです。

    XPath p = XPathFactory.newInstance().newXPath();
    InputSource in = new InputSource(...);
    NodeList list = (NodeList) p.evaluate("//*[contains(text(), 'value2')]", in, XPathConstants.NODESET);
    for(int i=0; i < list.getLength(); ++i) {
        System.out.println(list.item(i));
    }
于 2013-11-13T13:42:00.477 に答える
1

ノードをループする独自のメソッドを作成する必要があります。私が間違っていない限り、getElementByValue のような DOM メソッドはありません。

于 2013-11-13T13:38:21.763 に答える