0

2 つの強力な html マークアップ要素の間で、この html マークアップからテキストを抽出する必要があります

<h6>Main Heading</h6>
<ul>
<strong>Sub heading 1</strong>
<li>text1</li>
…
<li>textn</li>
<strong>Sub heading 2</strong>
<li>text1</li>
…
<li>textn</li>
</ul>

のように、Elements の配列ですべての strong 要素と li 要素 (テキスト) を取得する必要があります。私はそのようなすべての強い要素を取得しようとしました

Element ulElement = doc.select("h6:matchesOwn(Main Heading).first();
Elements subHeadings = ulElement.select("strong");
Elements subLIElements = ulElement.select("strong ~ li");

したがって、subHeadings 変数にすべてのサブ見出しがあり、subLIElements 変数にすべての li 要素があります...しかし、subHeadings[0] マップのように、これら 2 つを強い要素の前のすべての li 要素に関連付ける必要があります。これらの li 要素を取得するには、ツリーをトラバースする必要があると思いますか? 選択クエリでこれを行うことができる他の方法はありますか?

4

1 に答える 1

0

Elements の配列内のすべての strong および li 要素 (テキスト) を取得します

Elementの配列または配列の各要素のテキストだけが必要Elementsですか?

テキストのみの場合:

List<String> result = new ArrayList<>();
Elements elements = doc.select("strong, li");

for( Element e : elements )
{
    result.add(e.text());
}

結果: [小見出し 1, text1, textn, 小見出し 2, text1, textn]

この例は、すべての Strong / Liを出現順にelements含むリストです。Element

<strong>Sub heading 1</strong>
<li>text1</li>
<li>textn</li>
<strong>Sub heading 2</strong>
<li>text1</li>
<li>textn</li>  

おそらく、各要素のインデックスを使用して、不要なものを整理できます。

于 2012-08-27T12:52:55.427 に答える