我正在使用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”没有分号。 我想禁用编码或转义,我想要原始数据。
我该如何解决这个问题?
答案 0 :(得分:3)
你有一段XML。在XML中,有一种转义标记的方式,因为有时您只需要一段包含<
或其值为"
的属性的文本。使用字符实体引用完成转义,该引用以&符号开头,后跟代码,后跟分号。像这样:<
。这可以代表<
。
当然,这给我们留下了安培者本身的问题。如果它实际上是您需要的&符号,而不是某些不同的字符实体,则必须对其进行编码:&
。
你所拥有的是XML格式不正确的。 &
表示您正在启动字符实体引用,但它会获得Lang
。现在,也许jsoup没有解决这个问题。但那是因为它是用于HTML解析而不是XML。由于HTML比XML更宽松一些,我认为jsoup只是简单地用一些其他东西来替代未知字符引用。可能是一个nul
字符。
因此请确保XML格式正确。如果无法做到这一点,请不要将其视为XML,而是将其视为HTML。如果您正在处理XML处理,请查看SAX,StAX,DOM或JAXB。