我正在使用 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)。转义是使用字符实体引用完成的,该引用以一个符号开头,后跟一个代码,再后跟一个分号。像这样:<
.那可以代表<
.
当然,这给我们留下了 & 符号本身的问题。如果它实际上是您需要的一个符号,而不是一些不同的字符实体,您必须这样编码:&
.
您得到的是格式不正确的 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/