使用 jsoup 解析 XML - 防止 jsoup “清理”<链接> 标记
2022-09-03 09:36:56
在大多数情况下,我对使用jsoup解析XML没有问题。但是,如果 XML 文档中有标记,则 jsoup 将更改为 。这使得无法使用 CSS 选择器提取标记内的文本。<link>
<link>some text here</link>
<link />some text here
<link>
那么如何防止jsoup“清理”标签呢?<link>
在大多数情况下,我对使用jsoup解析XML没有问题。但是,如果 XML 文档中有标记,则 jsoup 将更改为 。这使得无法使用 CSS 选择器提取标记内的文本。<link>
<link>some text here</link>
<link />some text here
<link>
那么如何防止jsoup“清理”标签呢?<link>
在 jsoup 1.6.2 中,我添加了一个 XML 解析器模式,该模式按原样解析输入,而不应用 HTML5 解析规则(元素内容、文档结构等)。此模式将文本保留在标记中,并允许其多个,依此类推。<link>
下面是一个示例:
String xml = "<link>One</link><link>Two</link>";
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属性中。我敢肯定jsoup不会碰它。<link>
data-*
<link rel="..." data-city="Warsaw" />