jdom.element.getChild(String)は、予期しない結果を返しています

StackOverflow https://stackoverflow.com/questions/4493537

  •  12-10-2019
  •  | 
  •  

質問

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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top