2012-01-20 8 views
0

응용 프로그램의 내장 리소스 또는 SD에서 XmlPullParser를 사용하여 동일한 XML을 읽고 있습니다. 문제는 내가 공백에서 리소스를 xml 읽을 때 무시되지만 sdcard의 xml은 무시되지 않는다는 것입니다. 여기sdcard의 xml에 대한 XmlPullParser가 공백을 무시하지 않습니다.

내가 (더 코드를 당기는 두 경우 모두 일반적입니다) 자원의 XML에 대한

XmlPullParser parser = context.getResources().getXml(resId); 

을 PullParser를 만들고 여기에 내가 SDCARD에 XML을위한

XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
XmlPullParser parser = factory.newPullParser(); 

FileReader fileReader = new FileReader(filePath); 

parser.setInput(fileReader); 

답변

0

힌트를 파서를 만드는 방법 경우 : XML 리소스 .avk 내의은 빌드 프로세스 중에 바이너리 형식으로 컴파일됩니다. 이렇게하면 "불필요한"공백을 제거 할 수 있습니다. 이 컴파일을 피하려면 XML 리소스를 assets 폴더에 넣고 거기에서 XML을 읽을 수 있습니다.

context.getResources().getXml(resId); 물론 더 이상 작동하지 않습니다. 저작물에 할당 된 리소스 ID가 없습니다. 원본 파일 이름을 사용해야합니다.

편집 :

getXml()에 대한 문서는 말한다 :

XmlPullParser 구현은 여기 반환 일부 제한된 기능이 있습니다. 특히 입력을 변경할 수는 없으며 문맥 병합 및 주석 제거와 관련된 문서가 작성 당시 으로 미리 파싱되었으므로 고급 구문 분석 이벤트 만 사용할 수 있습니다. 나는 그것을 할 수있다 희망

+0

좋아. 즉, 리소스는 단순히 런타임에 공백을 포함하지 않습니다. 공백을 무시하고 파일을 자산에 배치하는 것을 읽는 것을 선호합니다. 그래서 내 질문은 : 공백을 무시하도록 XmlPullParser를 강제하는 방법, 코멘트? – Solvek

+0

nextToken()을 사용하면 주석을 무시하는 것이 쉽습니다. 하지만 * XmlPullParser *에서 공백 collpasing에 관한 정보를 찾을 수 없습니다. 어쩌면 당신은 그것을 직접 구현하거나 그 특정 기능의 다른 구현을 찾아야 할 것입니다. – JimmyB

관련 문제