【问题标题】:Getting element tag path in jSoup在 jSoup 中获取元素标签路径
【发布时间】:2015-06-21 16:27:06
【问题描述】:

有没有一种有效的方法可以使用 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-&gt;body-&gt;section-&gt;div-&gt;section-&gt;ul

【问题讨论】:

    标签: java html jsoup


    【解决方案1】:

    我相信一个好方法是通过 children() 方法 see here 检查你所在的元素是否有子元素。如果它有你把那个元素放在一个列表中并继续它的第一个孩子并做同样的事情,然后是下一个,依此类推。当没有任何人时,你有你的清单。这是一个递归的想法,你将对第二个孩子做同样的事情,依此类推。

    编辑 一点解释

    假设你在 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>
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2020-03-14
        • 2014-11-01
        • 1970-01-01
        • 2013-08-19
        • 1970-01-01
        • 1970-01-01
        • 2012-03-09
        • 1970-01-01
        • 2011-11-24
        相关资源
        最近更新 更多