jdom.element.getChild(String)は、予期しない結果を返しています
質問
APIによると jdom.org, 、の意味論 getChild(String name)
:
これにより、この要素内の最初の子要素が、指定されたローカル名を持つ最初の子要素を返し、名前空間なしに属します。指定された名前と名前空間に要素が存在しない場合、nullが返されます。
したがって、次のようなXML構造がある場合:
<?xml version="1.0" encoding="UTF-8"?>
<lvl1>
<lvl2>
<lvl3/>
</lvl2>
</lvl1>
私は現在指しているjdom要素を持っています <lvl1>
. 。次の電話をかけることができるはずです。
Element lvl3 = lvl1Element.getChild("lvl3");
と lvl3
非ヌルが必要です。
でも, 、私はそれを見つけました lvl3
実際には null
. 。私は何かが足りませんか?
これが機能するはずのサンプルコードスニペットです。
import java.io.StringReader;
import org.jdom.*;
public static void main(String[] args){
Document doc = new SAXBuilder().build(new StringReader("path to file"));
Element lvl1Element = doc.getRootElement();
Element lvl3Element = lvl1Element.getChild("lvl3"); //is null. Why?
}
解決
私が探していた機能を取得するために、私は Iterator
から getDescendants(ElementFilter)
fruction jdom.org
それから私はそれを手に入れました Element
次のコードを使用して探していました。
Element lvl3 = lvl1.getDescendants(new ElementFilter("lvl3"));
他のヒント
あなたはそれを言ったばかりです...
これは、与えられたローカル名でこの要素内の最初の子要素を返します...
基本的に、 lvl1
, 、あなたの最初の子供はです lvl2
. 。私はJDOMを使用してさらに役立ちませんでした。私の提案は行くことです lvl2
取得します lvl3
.
--- LVL1
---lvl2(child of lvl1)
---lvl3(child of lvl2)
所属していません StackOverflow