org.xmlpull.v1.XmlPullParserException: Error parsing document. (position:line-1,column-1) 솔루션
at org.apache.harmony.xml.ExpatPullParser$ByteDocument.flush(ExpatPullParser.java:959)
at org.apache.harmony.xml.ExpatPullParser$Document.pump(ExpatPullParser.java:770)
at org.apache.harmony.xml.ExpatPullParser$Document.dequeue(ExpatPullParser.java:814)
at org.apache.harmony.xml.ExpatPullParser.next(ExpatPullParser.java:303)
at cn.kafei.service.IdentityCardService.parseCardXml(IdentityCardService.java:85)
at cn.kafei.service.IdentityCardService.getCard(IdentityCardService.java:36)
at cn.kafei.test.XmlTest.testSendXML(XmlTest.java:34)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
원인 분석:
일반적으로 자신이 쓴 XML 파일은 모두 UTF-8로 인코딩되지만 일부 인터넷에서 XML이 사용하는 인코딩 방식은 GBK 또는 다른 인코딩이다. XmlPullParser가 해석할 때 나는 GBK를 사용해 보았지만 위의 오류를 보고하고 몇 시간 동안 나를 괴롭혔다. 결국 해결 방안을 찾아 GBK 파일을 버퍼로 읽고 입력 흐름으로 변환했다.마지막으로 XmlPullParser의 setInput 방법을 호출할 때 인코딩을 UTF-8로 설정하면 됩니다.
다음은 완전한 코드입니다. 이 해결 방법을 일반적인 방법으로 봉하여 직접 호출하면 됩니다.
/**
* GBK XML
* @param inputStream
* @return
* @throws Exception
*/
public static ByteArrayInputStream readGBKXml(InputStream inputStream)
throws Exception {
// XML , GBK XML , GBK
InputStreamReader reader = new InputStreamReader(inputStream, "gbk");
BufferedReader br = new BufferedReader(reader);// InputStreamReader
String temp;
String result = "";
while ((temp = br.readLine()) != null) {
result = result + temp;
}
ByteArrayInputStream stream = new ByteArrayInputStream(
result.getBytes());
return stream;
}
예:XmlPullParser pullParser = Xml.newPullParser();
pullParser.setInput(readGBKXml(inputStream), "UTF-8");
// XML ...
학습 토론을 진행하기 위해 더 많은 해결 방안을 제시하신 것을 환영합니다.
전재:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.