[英]CDATA XML is truncated while parsing
我正在使用SAX解析器(在android上)從WebService解析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ölsderundGin”(前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
。
總之,您需要在接收新字符時連接成員變量。
這是我在閱讀felix的帖子后的工作
private String text;
@Override
public void endElement(java.lang.String uri,
java.lang.String localName,
java.lang.String qName)
throws SAXException {
text = null;
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
super.characters(ch, start, length);
if(text != null){
text += String.copyValueOf(ch, start, length);
} else {
text = String.copyValueOf(ch, start, length);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.