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

How can I get the LineNumber of the element when using Jsoup?

如:

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

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

如何获取文件中eles[0]的行号?

你无法用 Jsoup 做到这一点 API。我检查了他们的源代码: org.jsoup.parser.Parser 在原始输入中没有保留元素的位置信息。

请参考 sources 上的 Grep 代码

只要Jsoup是为提取和操纵数据而构建的,我不相信他们将来会有这样的功能,因为元素位置是什么是模棱两可的经过操纵且维护实际引用的成本很高。

没有直接的方法。但是有一个间接的方法。 一旦找到像属性这样的兴趣点,只需在元素前添加一个标记作为 html,然后将文件写入另一个临时文件。下一步是使用文本编辑工具搜索令牌。

代码如下

第 1 步:

// 获取一个元素
对于(元素元素:doc.getAllElements()){
...一些获取元素属性的代码...

字符串 myAttr = attribute.getKey();
如果(myAttr.equals(“感兴趣的某些属性名称”){
System.out.println(attribute.getKey() + "::" + attribute.getValue());
element.before("");
}

第 2 步:

// 将文档写回临时文件
// 参见:

第 3 步:

最后一步是使用文本编辑工具在输出文件中搜索 "My Special Token : ABCDEFG"。

jsoup 是一个不错的库。我认为这会对其他人有所帮助。