8

XMLStreamReader を使用して StAX の学習を開始すると、いくつかの問題に直面しました。タグ間のすべてのコンテンツをテキストとして取得するにはどうすればよいですか? つまり、必要なタグの名前を知っていて、それを見つけたら終了タグに移動し、それらの間にあるすべての文字列を追加する必要があります。たとえば、次のようなものがあります

<rootTag>
...    
    <someTag>
        Some text content and other tags here…
    </someTag >
    <tagINeed>
        <someinternalTag1>
            <someinternalTag11>
                Some text content..
            </someinternalTag11>
            ...
        </someinternalTag1>
        <someinternalTag2>
            Something here
        </someinternalTag2>
    </tagINeed>
...
    <somethingAnother>
...
    </somethingAnother >
...
</rootTag>    

だから、私は自分の文字列を次のように取得する必要があります

        <someinternalTag1>
            <someinternalTag11>
                Some text content..
            </someinternalTag11>
            ...
        </someinternalTag1>
        <someinternalTag2>
            Something here
        </someinternalTag2>

どうすれば入手できますか?おそらく、ソース xml で必要なブロックの開始オフセットと終了オフセットを見つけ、解析後に部分文字列を指定する必要がありますか?

4

3 に答える 3

0

XMLでは、すべてがノードであり、STAXを使用すると、これらのノードを1つずつトラバースできます。XMLを文字列に変換し、Transformerを使用して必要な文字列を検索することで、目的の結果が得られると思います。

Transformer t=TransformerFactory.newInstance().newTransformer();
StringWriter sw=new StringWriter();         
StreamResult result=new StreamResult(sw);//holds the result of a transformation
DOMSource d=new DOMSource(XMLdoc);//your XML document
t.transform(d, result);
String xmlstring=sw.toString();

xmlstringを使用して目的の結果を得ることができます。

于 2012-12-27T09:07:52.007 に答える