我一直在寻找2天来解决这个问题...我是一个XML,我解析了这个XML文件。其中一个XML文件内容有''。它是一个URL字段。
在示例中..如果网址是这样的。
http://www.url.com/content/hello&whatsup
XML解析器会返回http://www.url.com/content/hello
我该如何解决?使用xml sax lib。我一直在尝试使用xml utils sax。
答案 0 :(得分:0)
XML解析器可能将“& whatsup”部分解释为xml实体,并且因为它没有解析它似乎无声地失败并且吃掉字符串。 XML实体主要用于包含元字符,否则这些元字符将被解释为有关如何读取文件的指令。大多数(如果不是全部)xml输出库将自动编码&到& amp; (默认情况下,在你写出元素时)(对于分号前没有空格)。
您有3个选项。一种是用
替换XML中的urlhttp://www.url.com/content/hello&whatsup
您可以对文件进行某种首次传递以正确编码& s,但可能没有可靠的方法来执行此操作。您可以尝试更换&使用 replaceme_ampersand ,将其读入,并将其替换回&amp ;.但是您必须确保该文件不包含实际的合法实体引用(或者没有解析它们)。另一种可能性是使用CDATA转义您知道的内容,包含非转义字符,如下所示:
<![CDATA[http://www.url.com/content/hello&whatsup]]>
第二个选项是不使用任何xml解析器,而是手动解析文件,通过正则表达式模式查找开始/结束标记。我可能会选择这个,具体取决于xml文件的复杂性及其包含的内容。
第三个选项是尝试查找xml解析器或设置,以便在找到未知/无效的xml实体引用时更改默认行为。您可以通过引发错误或按原样保留无效文本来覆盖此“吃实体”行为。你自己就是这个!