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() 方法检查您所在的元素是否有子元素,请参见此处。如果它有你把那个元素放在一个列表中并继续它的第一个孩子并做同样的事情,然后是下一个,依此类推。当没有任何人时,你有你的清单。这是一个递归的想法,你将对第二个孩子做同样的事情,依此类推。

编辑 一点解释

假设您在 html 标签上。调用儿童()。获取返回的列表并开始。第一个元素调用 children()。返回列表。第一个元素称为子元素等。当您停止(没有子元素)时,您会向上(父元素)并继续使用第二个子元素。当您访问了初始列表的所有节点(来自 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

要获取“打开”元素的列表,您可以简单地使用Element.parents()方法。如果要获取以根元素开头的列表,则必须重新排序返回的列表,但这应该很容易实现。

于 2015-06-21T08:27:06.703 回答