[英]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.