0

jSoupを使用して、開いているが閉じていないすべてのタグのHTML要素タグパスを取得する効率的な方法はありますか?

たとえば、HTMLが

<!DOCTYPE html>
<html>
    <head>...</head>
    <body>
        <section id="secID">
            <div class="divClass">
                <section id="subSection">
                    <h3>Heading</h3>
                     <ul class="list">
                        <li>

に着いたらli、その道をhtml->body->section->div->section->ul

4

2 に答える 2

1

あなたがいる要素にchildren()メソッドを介して子があるかどうかを確認するのが良い方法だと思います。ここを参照してください。その要素をリストに入れて、最初の子を続けて同じことを行い、次に次の子を続けます。誰も残っていないとき、あなたはあなたのリストを持っています。これは再帰的なアイデアです。2番目の子でも同じことを行います。

編集 少し説明

あなたがhtmlタグを使用しているとしましょう。children()を呼び出します。返されたリストを取得して開始します。最初の要素はchildren()を呼び出します。リストを返します。最初の要素は子などを呼び出します。停止すると(子なし)、次に上昇し(父の要素)、2番目の子を続行します。(html要素から)初期リストのすべてのノードにアクセスすると終了します。これは再帰的なアイデアであるため、効率は低下しますが、堅実です。

<html>   <--- head , body
    <head>text</head> <---just text node so no elements
    <body>   <--- Second child of html. ul 
        <ul> <--- Empty no elements. go to father element.
        </ul>
    </body>
</html>
于 2013-03-23T23:53:23.657 に答える
0

'open'要素のリストを取得するには、 Element.parents()メソッドを使用するだけです。ルート要素で始まるリストを取得する場合は、返されたリストを並べ替える必要がありますが、それは簡単なことです。

于 2015-06-21T08:27:06.703 に答える