我正在使用 SAX 解析器(在 android 上)解析来自 Web 服务的 xml 文件。在某些元素上,CDATA 被截断且不完整,例如XML 文件包含类似
的数据 <name><![CDATA[Gölsder und Ginck GmbH]]></name>
在用
解析 xml 文件之后public void characters(char[] ch, int start, int length)
throws SAXException {
super.characters(ch, start, length);
String text = new String(ch, start, length);
文本仅包含“Gölsder und Gin”(前 15 个字符)。我用 eclipse 调试了它,我发现整个字符串不包含在该方法的“char[] ch”参数中。所以解析本身似乎有错误
最佳答案
我也遇到过这个问题。关键是 characters()
方法可以在同一元素上多次调用。在你的情况下,如果你要写这个:
public void characters(char[] ch, int start, int length)
throws SAXException {
super.characters(ch, start, length);
String text = new String(ch, start, length);
Log.d("XMLTEST", text);
}
您可能会收到两条日志消息,一条 Gölsder und Gin
和一条 ck GmbH
。
总之,您需要有在接收新字符时连接起来的成员变量。
关于java - CDATA XML 在解析时被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3399891/