0

解析中の大きな XML ファイルがあります。

私の最初の selectNodes ステートメントは、解析したいすべての要素のリストを取得します。

最初の selectNodes ステートメントによって返された要素ごとに、別の selectNodes を実行したいと考えています。

XML は次のようになります。

<A>
    <B></B>
    <C></C>
</A>
<A>
    <B></B>
    <C></C>
</A>

内部ノード、つまり「A」の各サブセットを一度に 1 つずつ解析する必要があるため、私は拘束されています。

最終的な目標は、B、C の各組み合わせで、一度に 1 つずつ何かを行うことです。

4

2 に答える 2

1

xPath では、二重スラッシュ (//) を使用して、親ノード内の特定の名前のすべてのノードを検索できます。ドキュメント内のすべてのノードを返したい場合は、式を「//」で始めることができます。

すべての B ノードとすべての C ノードを別々のリストで返すには、次を試してください。

List<?> bNodes = document.selectNodes("//B");
List<?> cNodes = document.selectNodes("//C");

for (Object b : bNodes)
  for (Object c : cNodes)
    //do something with each b/c combination

または、検索するルート ノードを指定するには、次を使用します。

List<?> bNodes = document.selectNodes("A//B");
List<?> cNodes = document.selectNodes("A//C");

ドキュメントは、SAXReader で読み取られるファイルです。

于 2015-08-21T13:14:46.803 に答える
0

XPath 式のコンテキストとして、任意のノードを指定できます。B ノードを選択する XPath 式があるとします。

XPathExpression expr = xpath.compile("./B");

variable に A ノードがあるとしますNode aNode。単純に使用して B 要素を選択できます

Object result = expr.evaluate(aNode, XPathConstants.NODE);

result の型はNode.

于 2012-08-08T20:43:45.060 に答える