2015-01-06 1 views
0

이 코드 사용하여 내 응용 프로그램에 의해 생성 된 XML 파일을 읽으려고 : : 이벤트 유형이 START_DOCUMENT, 다음 ()이다 XmlPullParser 이름 예상 예외

XmlPullParser xpp = factory.newPullParser(); xpp.setInput(new StringReader(data)); int eventType = xpp.getEventType(); while(eventType != XmlPullParser.END_DOCUMENT) { switch(eventType) { case XmlPullParser.START_TAG: { String tagName = xpp.getName(); // do something break; } case XmlPullParser.TEXT: { // get text... break; } case XmlPullParser.END_TAG: { // do something break; } } eventType = xpp.next(); } 

하지만 처음에

,
함수가 예외를 throw를 org.xmlpull.v1.XmlPullParserException : 이름이 예상됩니다 (위치 : [email protected]의 START_TAG @ 2 : 2)

이유에 대해 알고 싶습니까?

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?> 
<0> 
    <createTime>1419453655800</createTime> 
    <editTime>1419453655800</editTime> 
    <color>2</color> 
    <text>ooooo</text> 
</0> 
<1> 
    <createTime>1419453586197</createTime> 
    <editTime>1419453605679</editTime> 
    <color>1</color> 
    <text>uuuuuuuuu</text> 
</1> 
<2> 
    <createTime>1419453358866</createTime> 
    <editTime>1419453597124</editTime> 
    <color>2</color> 
    <text>yyyyyyyyyy</text> 
</2> 
+0

귀하의 XML 문서 단일 루트 요소가 없으므로 잘 형성되지 않습니다. 이를 분석하기 전에이를 고쳐야합니다. – kjhughes

+0

@kjhughes OK, XML 붙여 넣기 주셔서 감사합니다. –

+0

그래서 더미 루트의 모든 요소를 ​​이동해야하며 모든 것이 작동합니까? 나는 그것을 시도 할 것이다 –

답변

1

는 요소 이름을 그것을 하나의 루트 요소를 제공하고 제작하여 XML well-formed를 확인 문자가 아닌 숫자로 시작 : 여기

내 XML 파일입니다

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?> 
<top> 
    <e0> 
    <createTime>1419453655800</createTime> 
    <editTime>1419453655800</editTime> 
    <color>2</color> 
    <text>ooooo</text> 
    </e0> 
    <e1> 
    <createTime>1419453586197</createTime> 
    <editTime>1419453605679</editTime> 
    <color>1</color> 
    <text>uuuuuuuuu</text> 
    </e1> 
    <e2> 
    <createTime>1419453358866</createTime> 
    <editTime>1419453597124</editTime> 
    <color>2</color> 
    <text>yyyyyyyyyy</text> 
    </e2> 
</top> 
+0

맞았습니다. 그것은 숫자 앞에 텍스트를 삽입 한 후에 작동합니다. 하지만 질문 : getName 함수를 호출 할 때 끝 줄 및 공백 문자를 얻을. 정상입니까? –

+1

아니요, 정상이 아닙니다. START_TAG, END_TAG 및 ENTITY_REF 이벤트의 경우 getName()은 문자열을 반환해야합니다. 문자열에는 공백이나 개행 문자가 없어야합니다. 다른 이벤트의 경우, getName (')는 null을 돌려 주어야한다. EOL과 공백을 반환하는'getName()'을 구체적으로 보여주는 [** 최소, 완전하고 검증 가능한 예제 (MCVE) **] (http://stackoverflow.com/help/mcve)로 새로운 질문을 게시 할 것입니다. . – kjhughes

+0

당신 말이 맞아요. 태그에 텍스트 (예 : 또는 )가 없으면 getText()는 "\ n"을 반환합니다. 죄송 합니다만 전 당신의 마지막 문장을 얻지 못했습니다. 고맙습니다 –