0

jsoup を使用して、xml ファイルからいくつかのプロパティを抽出しています。xmlDoc.select("ns|properties")

問題: 「プロパティ」タグがすべて検出されます。ns:tests タグの外側のプロパティのみが必要です。どうすればそれらを除外できますか?

<ns:interface>
</ns:interface>

<ns:tests>
  <ns:properties>
   <ns:name>name</ns:name>
   <ns:id>2</ns:id>
  </ns:properties>
</ns:test>

<ns:properties>
  <ns:name>name</ns:name>
  <ns:id>1</ns:id>
</ns:properties>
4

1 に答える 1

0

次の 2 つの方法を試すことができます。

/*
 * Solution 1: Check if a 'ns:properties' is inside a 'ns:tests'
 */
for( Element element : xmlDoc.select("ns|properties") )
{
    if( element.parent() != null && !element.parent().tagName().equals("ns:tests") )
    {
        /* Only elements outside 'ns:tests' here */
        System.out.println(element);
    }
}


/*
 * Solution 2: removing all 'ns:tests' elements (including all inner nodes.
 * 
 * NOTE: This will DELETE them from 'xmlDoc'.
 */
xmlDoc.select("ns|tests").remove();
Elements properties = xmlDoc.select("ns|properties");

System.out.println(properties);

解決策 2を選択した場合は、必ずバックアップ(例: クローン)を行ってxmlDocください。

于 2012-11-29T18:10:14.760 に答える