2017-04-14 4 views
0

次のXMLツリーがあり、Jsoupを使用して解析しています。Jsoupで第1レベルノードのみを取得する方法

<?xml version="1.0" encoding="UTF-8" ?> 
<nodes> 
    <node> 
     <name>NODE 1</name> 
     <value1> 
      <value1>NODE 1 VALUE 1</value1> 
     </value1> 
     <nodes> 
      <node> 
       <name>NODE 1 CHILD</name> 
       <value1>NODE 1 CHILD VALUE 1</value1> 
      </node> 
     </nodes> 
    </node> 
    <node> 
     <name>NODE 2</name> 
     <value1>NODE 2 VALUE 1</value1> 
    </node> 
</nodes> 

しかし、私はノード要素の最初のレベルを取得しようとします。それは、子ノードを含むすべての要素を返します。それは、明確に子要素も私のクエリに一致するため、正しく実行しています。

Elements elements = data.select("nodes > node"); 

XMLデータにレベル情報を追加せずに第1レベルのノード要素だけを取得する方法はありますか?

Elements elements = data.select("> nodes > node"); 

をしかし、あなたはXMLを解析するためにJsoup.parse(xml, "", Parser.xmlParser())を使用しましたし、XMLは、あなたのように実際にある場合のみ:

Elements elements = data.select("nodes").first().select("> node"); 

これは同様に動作します:

答えて

1

あなたはこのような何かを行うことができますあなたの質問に指定されています(<nodes>はルート要素です)

+0

あなたの答えは動作します。しかし、私が実際に必要としたのはint depth = e.parents()。size();これで正しい深さを知ることができます。 – newbie

関連する問題