java - 如何在 JSOUP 中禁用转义模式?

标签 java xml escaping urlencode jsoup

我正在使用 JSOUP (用于 XML 文件的 java 工具)我正在使用以下代码读取保存在 XML 文件中的 URL。这是我的代码:

Document d = Jsoup.parse(new File("feed.xml"), null);
Element elementCat = d.getElementsByTag("cat").get(0);
String stringUrl = elementCat.ownText();
System.out.println(stringUrl);

XML 输入文件是这样的:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<root>
<cat>http://www.isna.ir/ISNA/FullNews.aspx?SrvID=Event&Lang=P</cat>
</root>

我的问题是程序的输出是这样的: http://www.isna.ir/ISNA/FullNews.aspx?SrvID=Event ⟪=P 而不是这个: http://www.isna.ir/ISNA/FullNews.aspx?SrvID=Event&Lang=P

换句话说,它会自动将“&Lang”转换为“⟪”。 请注意不是“⟪”,只是没有分号的“&Lang”。 我想禁用编码或转义,我想要原始数据。

我该如何解决这个问题?

最佳答案

您有一段 XML。在 XML 中,有一种转义标记的方式,因为有时您只需要一段包含 < 的文本。或带有 " 的属性在它的值(value)。转义是使用字符实体引用完成的,该引用以一个符号开头,后跟一个代码,再后跟一个分号。像这样:&lt; .那可以代表< .

当然,这给我们留下了 & 符号本身的问题。如果它实际上是您需要的一个符号,而不是一些不同的字符实体,您必须这样编码:&amp; .

您得到的是格式不正确的 XML。 &表示您正在启动角色实体引用,但随后它会得到 Lang .现在,也许 jsoup 并没有解决这个问题。但那是因为它用于 HTML 解析而不是 XML。由于 HTML 比 XML 更宽松一些,我想 jsoup 只是将未知字符引用替换为其他内容。可能是 nul性格。

因此请确保 XML 格式正确。如果无法做到这一点,请不要将其视为 XML,而应将其视为 HTML。如果 XML 处理是您所追求的,请查看 SAX、StAX、DOM 或 JAXB。

关于java - 如何在 JSOUP 中禁用转义模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7933652/

相关文章:

shell - 如何将shell中的strace解析为纯文本?

java - 无法使用网络发送发送消息

java - 如何迭代 JsonObject (gson)

web - 概念自动转义是什么意思?

c# - 检查xml节点是否存在?

c# - Linq to Xml 到 Datagridview

ios - (Swift) 如何打印字符串中的 "\"字符?

java - 迭代 HashMap 以获取唯一键的计数

java - 将大型二进制数据写入文件

c# - 保存后在我的 XML 文件的开头获取 ""()