使用jsoup解析XML – 防止jsoup“清理”标记
在大多数情况下,使用jsoup解析XML没有问题。 但是,如果XML文档中有标记,jsoup会
some text here
将some 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文件以替换所有带有虚拟标记的文件并执行您想要执行的操作。