6

xpathですべてのアカウントの名前を取得するにはどうすればよいですか?次の式は、最初のアカウント名のみを返します。

XPathExpression fax = xpath.compile("/accounts/account/name")

<accounts>
<account>
<name>Johndoe1<name>
<account>
<account>
<name>Johndoe2<name>
<account>
</account>
4

3 に答える 3

7

このチュートリアルによると: http://www.ibm.com/developerworks/library/x-javaxpathapi/index.html次のようなことをする必要があります:

XPathExpression fax = xpath.compile("/accounts/account/name")
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
    System.out.println(nodes.item(i).getNodeValue()); 
}
于 2012-12-05T10:30:17.723 に答える
1

これは正しい XPath 式ですが、得られる結果は評価方法によって異なります。XPath 式は、ドキュメントのルート要素の下にあるすべての要素のすべての子要素を (ドキュメント順に) 含むノード セット/accounts/account/nameを返します。nameaccountaccounts

XPath データ モデルでは、ノード セットの文字列値は、セット内の最初のノードの文字列値として定義されます。したがって、単一の引数を使用する場合evaluate:

fax.evaluate(someDocument)

これにより、式が文字列として評価され、最初のname値が取得されます。代わりに、 koopajah's answerで提案されているように、式をノード セットとして評価し、各ノードの文字列値を順番に抽出する必要があります。

于 2012-12-05T11:47:43.847 に答える
0

accounts//account で試してください。これにより、ドキュメント内のすべてのアカウント タグが表示され、子孫は「accounts」です。

于 2012-12-05T10:30:52.590 に答える