2013-05-28 2 views
1

편집 1 :안드로이드에 내장 된 XML 태그를 어떻게 파싱합니까?

내가 XmlPullParser 실험을 시작했습니다, 나는 dicts 내 dicts을 (즉, 내가 알고, 잘못된 소리 않음) 처리하기 위해 생각하고 내가 사용할 수 재귀 readDict 같은 (XmlPullParser), dict 요소를 만날 때마다 호출하십시오.

HashMap 개체 목록을 포함하는 간단한 dict 모델 클래스에서 작동 할 수 있습니다.

내가 진행 갱신이 질문을 ... 계속됩니다

원래의 질문 :

다음과 같은 형태의 XML의 구문 분석을 가능하게하는 안드로이드 라이브러리가 있습니까?

<dict> 
    <key>..</key> 
    <string>..</string> 
    <key> 
    <array> 
     <dict> 
     <key> 
     <string> 
     <key> 
     <array> 
      <dict> 
       <key> 
       <string> 
      </dict> 
      <dict>...</dict> 
      <dict>...</dict> 
     </array> 
     </dict> 
    </array> 
</dict> 

전체 XML 파일

찾을 수 있습니다에서 : http://www.tsn.ca/config/iphone/TSNiphoneconfig.xml

문제 :

당신이 볼 수 있듯이, 일부 태그가 스스로 "에서"포함됩니다. 이것이 내가 처음 보는 시간입니다.

내가 SAX 파서 공장에보고 한 XML 끌어 오기 파서와 ** 안드로이드 SIMPLE 라이브러리 **. 내가 정말로 찾고있는 것은 라이브러리인데 단순한 XML과 유사한 구문을 사용하여처럼 XML 요소와 일치하는 데이터 모델 파일을 만들 수 있습니다.

그러나 라이브러리를 사용할 수없는 경우 XML Pull Parser와 같은 고유 XML을 어떻게 구문 분석 할 수 있습니까?

+0

"태그가 내장되어 있습니까?"라는 의미는 무엇입니까?너 태그를 구문 분석하고 싶니? – Abhishek

+0

다른 dict을 포함하는 dict - dict이 자식 dict을 가질 수 있음을 의미합니다. – ryvianstyron

답변

0

그래서이 문제에 대한 최선의 해결책은 재귀을 사용하는 것입니다. 각 태그를 개별적으로 구문 분석하고 매개 변수로 XMLPullParser를 전달하는 메소드를 작성하십시오.

parseArray(XmlPullParser xmlpp) 
{ 
    // require start and end tags 
    if you hit another tag, call its corresponding method 
} 

당신이 parseDict에있어 및 DICT 태그를 치면 그 방법, 당신은 단순히()를 다시 parseDict를 호출 할 수

그래서 여기에 몇 가지 의사입니다.

데이터를 가져와 일종의 데이터 모델로 설정하는 한, 데이터 모델이 어느 쪽이든 작동하기 때문에 dict이 반복적으로 dict에 포함되는 것은 중요하지 않습니다. u는 단순히 (I가 포함 된 '딕셔너리는'부모 'DICT'에 더 의존하지 의미) 'DICT'내부 데이터를 구문 분석하려면

0

, 다음 U는 logic.U 간단하게 다음과 같이 할 수있는 재귀 필요가 없습니다 :

int eventType = xpp.getEventType(); //xpp is reference of XmlPullParser 
while (eventType != XmlPullParser.END_DOCUMENT) { 
      if (eventType == XmlPullParser.START_TAG) { 
       if (xpp.getName().equalsIgnoreCase("dict")) { 
        //do something 
       } 
eventType = xpp.next(); 
      } 

'dict'이 구문 분석 될 때마다 동일한 루프 안에 있습니다.