使用Jsoup时如何获取元素的LineNumber?

时间:2017-10-15 07:39:26

标签: java parsing jsoup elements

如:

Document doc = Jsoup.parse(file,"UTF-8");

Elements eles = doc.getElementsByTag("style");

如何在文件中获取eles[0]的lineNumber?

2 个答案:

答案 0 :(得分:1)

您无法使用Jsoup API执行此操作。我查看了他们的源代码:org.jsoup.parser.Parser不保留原始输入中元素的位置信息。

请参阅Grep Code上的sources

如果Jsoup是为了提取和操纵数据而构建的,我不相信他们将来会有这样的功能,因为操作后元素位置是多么昂贵且成本高昂保持实际参考。

答案 1 :(得分:0)

没有直接方法。但是有一种间接的方式。 找到兴趣点(如属性)后,只需在元素之前添加标记(如html),然后将文件写入另一个临时文件即可。下一步是使用文本编辑工具搜索令牌。

代码如下。

步骤1:

//获取元素
for(Element element:doc.getAllElements()){
...一些获取元素属性的代码...

String myAttr = attribute.getKey();
if(myAttr.equals(“ some-attribute-name-of-interest ”){
  System.out.println(attribute.getKey()+“ ::” + attribute.getValue());
  element.before(“ <!-我的特殊令牌:ABCDEFG->”);
}

步骤2:

///将文档写回到临时文件
//参见:How to save a jsoup document as text file

步骤3:

最后一步是使用文本编辑工具在输出文件中搜索“我的特殊令牌:ABCDEFG”。

jsoup是一个不错的库。我以为这会帮助别人。