簡體   English   中英

JDOM.Element.getChild(String)返回意外結果

[英]JDOM.Element.getChild(String) is returning unexpected results

根據jdom.org上的API, 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應該為非null。

但是 ,我發現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?
}

為了得到我一直在尋找的功能,我用了一個IteratorgetDescendants(ElementFilter)函數從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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM