2010-08-03 4 views
3

WebService에서 XML 파일을 구문 분석하기 위해 안드로이드에 SAX 파서를 사용하고 있습니다. 일부 요소에서는 CDATA가 잘리지 않고 완료되지 않았습니다. 는 XML 파일은구문 분석하는 동안 CDATA XML이 잘립니다.

<name><![CDATA[Gölsder und Ginck GmbH]]></name> 

추천하고

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 싶게 진"(처음 15 자)를 포함하는 XML 파일을 구문 분석 후 데이터를 포함합니다. 이클립스와 함께 디버깅하고 전체 문자열이 메서드의 "char [] ch"인수에 포함되어 있지 않은 것을 확인합니다. 따라서 구문 분석 자체에 오류가있는 것 같습니다.

+0

참고 펠릭스의 포스트 읽은 후 주위, VTD-XML이 문제 –

답변

3

이 문제도있었습니다. 같은 요소에서 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 Ginck GmbH을 얻을 것입니다.

결론적으로 새로운 문자를받을 때 연결하는 멤버 변수가 있어야합니다.

+0

이 없습니다 저도 같은 문제를했고 그것은 단지 때때로 문자열을 분할로 그래도 이상해 합치 결국 . – Rebzie

0

이 내 작품이

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); 
    } 
} 
관련 문제