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

时间:2011-10-28 19:05:03

标签: 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

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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

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

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

你所拥有的是XML格式不正确的。 &表示您正在启动字符实体引用,但它会获得Lang。现在,也许jsoup没有解决这个问题。但那是因为它是用于HTML解析而不是XML。由于HTML比XML更宽松一些,我认为jsoup只是简单地用一些其他东西来替代未知字符引用。可能是一个nul字符。

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