Java 特定数据的SAXParser失败
我正在尝试解析如下所示的XML文件: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 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);
}