繁体   English   中英

在jSoup中获取元素标签路径

[英]Getting element tag path in jSoup

有没有一种有效的方法来使用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

我相信一个好方法是通过children()方法查看您所在的元素是否有孩子, 请参见here 如果有,则将该元素放在列表中,并继续第一个子元素,然后再进行下一个,依此类推。 如果没有人可以留下您的清单。 这是一个递归的想法,您将对第二个孩子执行相同的操作,依此类推。

编辑 一点解释

假设您在html标签上。 呼叫children()。 获取返回的列表并开始。 第一个元素调用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>

要获取“打开”元素的列表,只需使用Element.parents()方法即可。 如果要使列表以root元素开头,则必须对返回的列表进行重新排序,但这对于实现而言应该是微不足道的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM