0

getChildText() を使用して、数レベルの深さのノードからテキストを取得したいと考えています。ファイルには 2 つの名前空間があります。以下の構文は機能せず、textToGetnullに設定します。

 String textToGet = root.getChildText("ns1:Customer/ns1:Address/ns1:Street/ns2:Streetname");

最初に子要素を取得してからそのテキストを取得するという代替手段があることは知っていますが、ワンライナーを使用したいと考えています。

また、一部の要素がファイル内にあることが保証されていないため、getChild() をチェーンしないでください。

4

1 に答える 1

1

あなたはそれをワンライナーにすることはできません....

XPaths の使用を検討してください.... JDOM 2.x はそれを助けるはずです:

XPathExpression<String> xpe = XPathFactory.instance().compile(
    Filters.fstring(), "ns1:Customer/ns1:Address/ns1:Street/ns2:Streetname",
    null, namespace_ns1, namespace_ns2);
String textToGet = xpe.evaluateFirst(root);

(textToGet は null の場合があります)

編集、上記の XPath 式は実際には要素を返します... XPath の末尾に「/text()」を追加するか、textToGet を文字列 (およびフィルターも) に変更する必要があります。

ロルフ

于 2012-10-11T18:02:41.293 に答える