2014-07-10 1 views
0
<MyEvents> 
<Tracking event="first"> 
<![CDATA[ 
http://www.myurl.com/test1 
]]> 
</Tracking> 
<Tracking event="second"> 
<![CDATA[ 
http://www.myurl.com/test2 
]]> 
</Tracking> 
<Tracking event="third"> 
<![CDATA[ 
http://www.myurl.com/test3 
]]> 
</Tracking> 
<Tracking event="fourth"> 
<![CDATA[ 
http://www.myurl.com/test4 
]]> 
</Tracking> 
<Tracking event="fifth"> 
<![CDATA[ 
http://www.myurl.com/test5 
]]> 
</Tracking> 
</MyEvents> 

나는 구문 분석하고 저장할 필요가있는 xml을 가지고있다. 각 노드의 이름이 같은 "추적"나는이 XML을 구문 분석하는 방법을 모릅니다. 각 이벤트 이름 (이 경우 첫 번째, 두 번째, 세 번째, 네 번째 및 다섯 번째)에 해당하는 URL을 구문 분석하고 변수에 저장하려고합니다. 나는 XMLPullParser를 사용하여이 XML 파싱의 다른 부분에 대해 내가 구문 분석하는 방법을 잘 모릅니다 이름은 같지만 서로 다른 이벤트 유형 노드의 경우XmlPullParserFactory를 사용하여 안드로이드의 Xml 파싱

if(myparser.getName().equalsIgnoreCase("tagname")){ 
         //do something 
        } 

를 이용하여 간단하고 있습니다. 어떤 도움을 주셔서 감사합니다.

+0

마치 속성을 처리하고 구문 분석기를 통해 필터링해야하는 것처럼 보입니다. –

+0

['getAttributeValue'] (http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html#getAttributeValue (int)) 메소드를 살펴보십시오. – Rajesh

+0

경우 (parser.getAttributeValue ("두 번째", 널 (null))! = null이) 이 같은 뭔가 { \t // 뭔가를 \t \t \t \t \t \t 을}? –

답변

1

첫째,이 같은 내부 클래스를 선언 할 수있다 :

static class Track { 
    String event; 
    String url; 
} 

를 그런 다음, 구문 분석 코드 : 그것은 완벽 아니지만 트랙의 목록을해야

List<Track> allTracks = new ArrayList<Track>(); 

myparser.require(XmlPullParser.START_TAG, null, "MyEvents"); 
while (myparser.next() != XmlPullParser.END_TAG) { 
    if (myparser.getEventType() != XmlPullParser.START_TAG) { 
     continue; 
    } 
    String name = myparser.getName(); 
    if (name.equals("Tracking ")) { 
     String event = myparser.getAttributeValue(0); // I'm supposing that there is just one 
     myparser.require(XmlPullParser.START_TAG, null, "Tracking "); 
     String url = null; 
     if (myparser.next() == XmlPullParser.TEXT) { 
      url = parser.getText(); 
      myparser.nextTag(); 
     } 
     Track track = new Track(); 
     track.event = event; 
     track.url = url; 
     allTracks.add(track); 
    } 
} 

, 각각 하나의 각각의 URL 및 이벤트.

+0

적시에 도움을 요청 해 주신 스 니펫을 보내 주셔서 감사합니다. 그것은 많은 도움이되었습니다. –