如:
Document doc = Jsoup.parse(file,"UTF-8");
Elements eles = doc.getElementsByTag("style");
如何在文件中获取eles[0]
的lineNumber?
答案 0 :(得分:1)
您无法使用Jsoup API执行此操作。我查看了他们的源代码:org.jsoup.parser.Parser
不保留原始输入中元素的位置信息。
请参阅Grep Code上的sources
如果Jsoup是为了提取和操纵数据而构建的,我不相信他们将来会有这样的功能,因为操作后元素位置是多么昂贵且成本高昂保持实际参考。
答案 1 :(得分:0)
没有直接方法。但是有一种间接的方式。 找到兴趣点(如属性)后,只需在元素之前添加标记(如html),然后将文件写入另一个临时文件即可。下一步是使用文本编辑工具搜索令牌。
代码如下。
//获取元素
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->”);
}
///将文档写回到临时文件
//参见:How to save a jsoup document as text file
最后一步是使用文本编辑工具在输出文件中搜索“我的特殊令牌:ABCDEFG”。
jsoup是一个不错的库。我以为这会帮助别人。