簡體   English   中英

解析時會截斷CDATA XML

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM