2011-03-28 3 views
2

XML 데이터를 성공적으로 여러 번 파싱했지만, 안드로이드에서 처음으로 동일한 작업을 수행했습니다. 나는 일반적으로 DOM을 사용하여 시도했지만 매번 .parse 메서드에서 오류가 발생합니다. 나는 온라인으로 수색하고 여러 번 시도했지만 성공하지 못했습니다. 필자가해야 할 일은 로컬 파일의 XML 데이터를 일부 함수에서 인수로 가져 오는 것입니다. Main Activity의 onCreate 메소드에서 코드를 구현했습니다. 이것은 내가 무엇을 할애해야하는지, 그러나 이번에는 성공하지 못했습니다 :xml은 로컬 파일에서 안드로이드로 구문 분석

당신이 나를 도와 줄 수 있기를 바랍니다. 감사!

답변

3

안드로이드에 C :라는 드라이브 개념이 없으므로 파일이 유효하지 않으며 파서가 질식합니다. Android는 유닉스 파일 시스템을 사용하므로 경로 모양은 /data/file.xml과 같습니다.

assets 폴더의 xml 파일을 구문 분석하려면 this code을보고 폴더를 열고 파일을 가져 와서 입력 스트림을 엽니 다. 그런 다음 this method으로 전화하십시오. 입술에

+0

어떻게 로컬 파일에서 구문 분석 할 수 있습니까 ?? – g90

+1

기본적으로 어디 있는지 알아야합니다. 불행히도 파일 시스템에있는 위치를 말하지 않았습니다. –

+0

나는 그것을 시도했지만 라인에서 프로그램이 충돌 함 AssetManager assetManager = context.getAssets(); 나는 그것이 왜 안드로이드에서 그렇게 복잡한 지 믿을 수 없다 : S – g90

2

1/새 폴더를 생성 : OU (원시 ==/입술/원료 파일 복사 testingxml.xml 및 상기 SOM을 사용하여 위치 원시

2/파싱 XML 폴더로 붙여 당신이 원하는 경우 SAX)

InputStream catDoc = context.getResources().openRawResource(R.raw.testingxml); 

//Using factory get an instance of document builder 
    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
//parse using builder to get DOM representation of the XML file 
    dom = builder.parse(catDoc, null); 
+0

정말 고마워요! :) – g90

0

그래서 프로젝트 폴더로 이동 RES 폴더를 찾을 다음이 "RAW" 라는 이름의 새 폴더를 만들고 거기 XML 파일을 배치하고 자동으로 생성에 업데이트 될 때까지 프로젝트를 새로 고침 클래스로서 R.java. 이제

1

:)는 폴더 고해상도의 원시라는 이름의 폴더를 생성 시도하고 작업 공간에서 프로젝트를 통해이 XML 파일을 넣어 ... R.RAW.XYZ.xml를 사용할 수 있습니다. 프로젝트가 R.java으로 업데이트 될 때까지 새로 고칩니다. 그런 다음이 코드를 사용하십시오 :

InputStream file = this.getResources().openRawResource(R.raw.license_status); 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
Document doc = db.parse(file); 
doc.getDocumentElement().normalize(); 
관련 문제