使用jsoup解析XML – 防止jsoup“清理”标记

在大多数情况下,使用jsoup解析XML没有问题。 但是,如果XML文档中有标记,jsoup会some text heresome text here更改为some text here 。 这使得无法使用CSS选择器在标记内提取文本。

那么如何防止jsoup“清理” 标签?

在jsoup 1.6.2中,我添加了一个XML解析器模式,它按原样解析输入,而不应用HTML5解析规则(元素,文档结构等的内容)。 此模式将文本保留在标记中,并允许其多个等。

这是一个例子:

 String xml = "OneTwo"; Document xmlDoc = Jsoup.parse(xml, "", Parser.xmlParser()); Elements links = xmlDoc.select("link"); System.out.println("Link text 1: " + links.get(0).text()); System.out.println("Link text 2: " + links.get(1).text()); 

返回:

 Link text 1: One Link text 2: Two 

不要在元素中存储任何文本 – 它是无效的。 如果您需要额外信息,请将其保留在HTML5 data-*属性中。 我确定jsoup不会碰它。

  

可以有一个解决方法。 在将XML传递给jsoup之前。 转换XML文件以替换所有带有虚拟标记的文件并执行您想要执行的操作。