Java 特定数据的SAXParser失败

Java 特定数据的SAXParser失败,java,android,xml-parsing,saxparser,Java,Android,Xml Parsing,Saxparser,我正在尝试解析如下所示的XML文件: <?xml version="1.0" encoding="utf-8"?> <downloaddata> <downloaditem itemid="1"> <title>Abdul kalaam Inspirational Talk</title> <downloadlink>http://o-o.preferred.spectranet-blr1.v8.ls

我正在尝试解析如下所示的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<downloaddata>
    <downloaditem itemid="1">
    <title>Abdul kalaam Inspirational Talk</title>
    <downloadlink>http://o-o.preferred.spectranet-blr1.v8.lscache4.c.youtube.com/videoplayback?upn=Rxb-DvFeBTE&sparams=cp%2Cid%2Cip%2Cipbits%2Citag%2Cratebypass%2Csource%2Cupn%2Cexpire&fexp=906512%2C907217%2C907335%2C921602%2C919306%2C919316%2C904455%2C919324%2C904452&itag=18&ip=203.0.0.0&signature=96D7FA17DF684B4C2CD30F12251F3263C83EC443.05F62E98E1059BB44459ABF319F50DC4B7E6D90E&sver=3&ratebypass=yes&source=youtube&expire=1337691481&key=yt1&ipbits=8&cp=U0hSTFZUT19NS0NOMl9OTlNFOmlwaTFSSGFfd3NK&id=67ffa1d50864f57d&title=Abdul%20Kalam%20inspirational%20Speech%20on%20Leadership%20and%20Motivation</downloadlink>
    </downloaditem>
</downloaddata>
上述代码没有为上述xml文件回调
endElement
。 然而,如果xml是

<?xml version="1.0" encoding="utf-8"?>
<downloaddata>
    <downloaditem itemid="1">
        <title>Abdul kalaam Inspirational Talk</title>
        <downloadlink>http://www.gmail.com/hello/world/sdfsdf%20.@@%!@#    ($dwe</downloadlink>
    </downloaditem>
</downloaddata>

Abdul kalaam励志演讲
http://www.gmail.com/hello/world/sdfsdf%20.@@%!@#    ($dwe)


Abdul kalaam励志演讲
HttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpHttpA

然后就可以了。我做错了什么?

解析器不会解析特殊字符。如果所有特殊字符都出现在

大宗报价

大宗报价


您可以将此文本传递给TextUtils.htmlEncode(字符串)然后开始解析。我认为它将在服务器端工作或更改它,以便为您提供使用UTF-8字符集编码的数据,并且在设备端,您可以使用相同的字符集进行解码。您的解析器无法解析所讨论的xml的原因是它是无效的xml。导致问题的数据部分包含必须转义的字符。请参阅请参阅维基百科关于XML的文章,以了解更多信息

这在生成xml的任何地方都能得到最好的纠正,最简单的修复方法是将有问题的文本包装在一个xml文件中

一旦数据被修复,您也可能会看到由于解析代码中的误解而导致的问题

@Override
public void characters(char[] ch, int start, int length) throws SAXException {
   tempVal = new String(ch,start,length);
}
不会始终获取开始标记和结束标记之间的所有字符,因为此方法的约定允许多次调用它。您需要附加到字符串缓冲区,而不是简单地复制到字符串中,该缓冲区在
startElement
方法中初始化,并在
endElement
方法中使用


有关此
字符
方法解析问题的更多信息,请参阅。

谢谢您的回复。请您详细说明如何在不破坏url的情况下实现此功能。任何代码示例都将不胜感激。谢谢。您是否尝试将所有响应传递给TextUtils.htmlEncode(string);然后开始解析只需一次尝试:手动将InputSource设置为与InputSource.setEncoding(“UTF-8”)或InputSource.setEncoding(“ISO-8859-1”)类似的ISO,然后将其传递给SAX解析器的parse()解析器解析“&”字符时遇到问题谢谢!稍后将尝试并恢复。
<?xml version="1.0" encoding="utf-8"?>
<downloaddata>
    <downloaditem itemid="1">
        <title>Abdul kalaam Inspirational Talk</title>
            <downloadlink>httphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttphttpa</downloadlink>
    </downloaditem>
</downloaddata>
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
   tempVal = new String(ch,start,length);
}