2011-10-08 4 views
0

특정 값을 가진 노드 요소 만 반환하거나 구문 분석하는 방법은 무엇입니까? 다음은 Android 날짜 값을 기준으로 XML을 구문 분석

내 간단한 XML하지만 난 단지 2012-03-09의 날짜가있는 meeting_item 년대에서 time, meeting_namehost_name 필요합니다 아래
<meeting_item> 
    <time>12:30</time> 
    <date>2012-03-09</date> 
    <meeting_name>build a shop 4</meeting_name> 
    <host_name>Bob Jones</host_name> 
</meeting_item> 
<meeting_item> 
    <time>11:30</time> 
    <date>2012-03-23</date> 
    <meeting_name>build a shop advance</meeting_name> 
    <host_name>Judy Washington</host_name> 
</meeting_item> 
<meeting_item> 
    <time>11:30</time> 
    <date>2012-03-23</date> 
    <meeting_name>build a shop 2</meeting_name> 
    <host_name>Tom Smith</host_name> 
</meeting_item> 
<meeting_item> 
    <time>11:30</time> 
    <date>2012-04-06</date> 
    <meeting_name>build a shop 3</meeting_name> 
    <host_name>Tom Green</host_name> 
</meeting_item> 

지금까지 내 구문 분석 코드를하지만 이것은 단지 얻는다 파일의 모든 : 내 로그 캣 Log.d에서 또한

 String xml = XMLfunctions.getXML(items); 
     Log.d(TAG, xml); 
     Document doc = XMLfunctions.XMLfromString(xml); 
int numResults = XMLfunctions.numResults(doc); 

     if((numResults <= 0)){ 
      Toast.makeText(MeetingManager.this, "NOT GETTING XML", Toast.LENGTH_LONG).show(); 
      finish(); 
     } 

     Element docElem = doc.getDocumentElement(); 
     NodeList nl = docElem.getElementsByTagName("Meeting_Data"); 
     Element elem = (Element)nl.item(1); 
     NodeList nodes = elem.getElementsByTagName("meeting_item"); 



     for (int i = 0; i < nodes.getLength(); i++) {       
      HashMap<String, String> map = new HashMap<String, String>();  

      Element e = (Element)nodes.item(i); 
      map.put("time", XMLfunctions.getValue(e, "time")); 
      map.put("name", XMLfunctions.getValue(e, "meeting_name")); 
      map.put("hostname", XMLfunctions.getValue(e, "host_name")); 
      mylist.add(map);    
     }  

     ListAdapter adapter = new SimpleAdapter(MeetingManager.this, mylist , R.layout.listlayout, 
         new String[] {"time", "name", "hostname" }, 
         new int[] { R.id.time, R.id.meeting_name, R.id.host }); 

     setListAdapter(adapter); 

(TAG, XML); 파일을 통해 모든 것을 만들지는 않습니다. 그리고 때로는 모든 파일을 읽지 않는 것에 대해 오류가 발생하고 오류가 발생합니다. httpget 할 수있는 한계가 있습니까?

답변

0

xml 파일의 일부만 구문 분석하려는 경우 XmlPullParser 또는 SaxParser와 같은 것을 사용하십시오. DOM 파서가 XML 데이터를 기반으로 객체의 완전한 트리를 만들려고 할 때. xml 끌어 오기 구문 분석기에서이를 수행하려면 구문 분석 코드는 다음과 같습니다.

XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
factory.setNamespaceAware(false); 
factory.setValidating(false); 
XmlPullParser xpp = factory.newPullParser(); 
xpp.setInput(is,"UTF-8"); 

int eventType = xpp.getEventType(); 
outerloop: 
while (eventType != XmlPullParser.END_DOCUMENT) { 
    switch(eventType){ 
     case XmlPullParser.START_DOCUMENT: 
      Log.e("Start","Start"); 
      break; 
     case XmlPullParser.START_TAG: 
      Log.e("StartTag", xpp.getName()); 
      break;      
     case XmlPullParser.END_TAG: 
      Log.e("EndTag", xpp.getName()); 
        //When you need to stop parsing use this 
        break outerloop; 
      break; 
    } 
    eventType = xpp.next(); 
}