2017-05-16 4 views
0

내가 DOM XML 파서를 사용하는 것을 시도하고 있지만 충돌은 IOException이자바 - 안드로이드 스튜디오에서 사용 DocumentBuilder를/XML 파서는

Document doc = builder.parse(file); 

코드에서 :

try { 

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder builder = factory.newDocumentBuilder(); 
    File file = new File(getResources().getResourceName(R.raw.fooddata)); 
    Document doc = builder.parse(file); 

}catch (ParserConfigurationException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} catch (SAXException e) { 
    e.printStackTrace(); 
} 

나는 프로그래머 뭔가 잘못 생각 파일 패스 fooddata.xml 파일은 /res/xml/fooddata.xml & /res/raw/fooddata.xml에 있습니다. 다른 방법으로 액세스하려고 시도했지만 아무 것도 작동하지 않습니다.

나는

가 어떻게이 builder.parse (파일) 작업을받을 수 있나요 시도/캐치에서 IOException가 얻을?

답변

0

fooddata.xml 파일은

사람들은 개발 컴퓨터에있는 파일 있습니다 /res/xml/fooddata.xml & /res/raw/fooddata.xml입니다. 그들은 이고 안드로이드 장치의 파일은이 아닙니다. 리소스는 장치의 APK 파일에있는 항목에 불과합니다.

은 교체 :

File file = new File(getResources().getResourceName(R.raw.fooddata)); 
Document doc = builder.parse(file); 

로 :

Document doc=builder.parse(getResources().openRawResource(R.raw.fooddata)); 
+0

잘 작동하는 것 같다하지만 지금은 OutOfMemoryError를 얻을. xml 파일은 30MB입니다. –

+0

@SimonAndersson 그건 DOM의 문제입니다. 그것은 메모리 집약적입니다. 대신 SAX 또는 StAX를 사용해야 할 수도 있습니다. – Andreas

+0

@ Andreas 그래서 문제는 안드로이드 장치에 램입니까? 내 에뮬레이터가 잘 작동하기 때문에 –

관련 문제