java - CDATA XML 在解析时被截断

标签 java android xml sax cdata

我正在使用 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/

相关文章:

java - 添加jlabel组件后的Jpanel大小

android - 如何在eclipse中为android项目集成aar库依赖

java - 在不同的类中使用一个类的变量 : Java

c# - 如何在 .NET Core 中执行 XmlIgnore?

java - SERVICE_VERSION_UPDATE_REQUIRED

java - 正则表达式在最后一个冒号之后查找字符串

java - 为什么在 java.sql.Date 和 java.util.Date 上不推荐使用 getMonth

java - "main"org.apache.spark.SparkException : Task not serializable

android - 如何使用 Android 应用程序在 Web View 中呈现 pdf 文件?

java - 标签taskdef找不到 'org.jvnet.jaxb2_commons.xjc.XJC2Task'类