2010-05-23 4 views
10

끌어 오기 구문 분석기를 사용하여 assets 폴더에서 로컬 XML 파일을 구문 분석하려면 어떻게해야합니까? 파서가 작동하도록 할 수 없습니다. 항상 io 예외를 throw합니다. 나는 파일에 대한 경로를 얻거나 파일에 연결할 수 없다고 생각한다.xml 구문 분석기 자산 xml

+0

당신이 당겨보다 더 파서 다른 고려할 것입니다 도움이되기를 바랍니다? –

답변

22

mixm, (아무도 다른 것 같다 없기 때문에) 요청으로 내가 모두 '자산'과 '입술'에서 로컬 파일을로드 할 수 있지만 귀하의 질문에 대답하기 위해 여러 가지 방법으로 놀 된

:

try { 
     XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
     factory.setValidating(false); 
     XmlPullParser myxml = factory.newPullParser(); 

그런 다음 xml 파일을 열고으로 설정 :

먼저, XML 테스트 전에 유효 확인 또는 검증을 해제 중 하나는, 이것은 당신이 그렇게 동시에 풀 파서를 초기화 할 수있는 방법입니다 끌어 오기 구문 분석기에 입력 :

 InputStream raw = getApplicationContext().getAssets().open("simple.xml"); 
     myxml.setInput(raw, null); 

이제 설정하여 풀 루프 (또는 다른, 당신은 잡아 당기거나 지연되지 않습니다할지 여부에 따라 달라집니다, 즉 당신의 디자인 결정이있다 :

 int eventType = myxml.getEventType(); 
     while(eventType != XmlPullParser.END_DOCUMENT) { 
      if(eventType == XmlPullParser.START_DOCUMENT) { 

       Log.d(MY_DEBUG_TAG, "In start document"); 
      } 
      else if(eventType == XmlPullParser.START_TAG) { 
       Log.d(MY_DEBUG_TAG, "In start tag = "+myxml.getName()); 
      } 
      else if(eventType == XmlPullParser.END_TAG) { 
       Log.d(MY_DEBUG_TAG, "In end tag = "+myxml.getName()); 

      } 
      else if(eventType == XmlPullParser.TEXT) { 
       Log.d(MY_DEBUG_TAG, "Have text = "+myxml.getText()); 
      } 
      eventType = myxml.next(); 
     } 
    } catch (XmlPullParserException e) { 

참고 myxml.getEventType(), 당신은 얻을이 작업을 수행 할 필요가 구문 분석하고 당신이 당기는 어떤 유형 이벤트를 처리합니다. 참고 : 가독성을 위해 블록을 생략하십시오.

는 2.1 위의 테스트는 - 프랭크