【问题标题】:How can I disable escape mode in JSOUP?如何在 JSOUP 中禁用转义模式?
【发布时间】:2011-10-28 19:05:03
【问题描述】:

我正在使用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;”,只是没有分号的“&Lang”。 我想禁用编码或转义,我想要原始数据。

我该如何解决这个问题?

【问题讨论】:

  • jsoup 不只是 HTML 而不是 XML?
  • 我认为你是对的。但是 JSOUP 也有强大的处理 XML 的功能,我不想阻止使用它们。

标签: java xml escaping urlencode jsoup


【解决方案1】:

您已经获得了一段 XML。在 XML 中,有一种转义标记的方式,因为有时您只需要一段包含 &amp;lt; 的文本或在其值中包含 " 的属性。转义是使用字符实体引用完成的,该引用以 & 开头,后跟代码,后跟分号。像这样:&amp;lt;。那可以代表&amp;lt;

当然,这给我们留下了与符号本身的问题。如果它实际上是您需要的 & 符号,而不是某些不同的字符实体,则必须对其进行编码:&amp;amp;

您所得到的是格式不正确的 XML。 &amp; 表示您正在开始一个字符实体引用,但随后它得到Lang。现在,也许 jsoup 对此并没有太大的问题。但那是因为它是用于 HTML 解析而不是 XML。由于 HTML 比 XML 更宽松一点,我想 jsoup 只是简单地将未知字符引用替换为其他内容。可能是 nul 字符。

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-09-10
  • 2011-06-09
  • 2013-06-14
  • 2021-09-11
  • 1970-01-01
  • 2021-04-18
  • 2015-08-24
  • 1970-01-01
相关资源
最近更新 更多