2011-09-19 16 views
7

मैं एंड्रॉइड के XmlPullParser के साथ एक OpenStreetMap (.osm) फ़ाइल के साथ काम कर रहा हूं।XmlPullParser बच्चे नोड्स

<way id='-13264' action='modify' visible='true'> 
    <nd ref='-13252' /> 
    <nd ref='-13251' /> 
    <nd ref='-13249' /> 
    </way> 

मैं हर रास्ता नोड के भीतर nd- नोड्स के साथ काम करने की जरूरत है, एक समय (जो जड़ है) में एक रास्ता नोड, एक निश्चित डेटा बनाने: भाग मैं के साथ समस्या आ रही है यह है उन नोड्स के बीच संरचना सटीक होना चाहिए। XmlPullParser में एक नोड के सभी बच्चे नोड्स प्राप्त करने के लिए कोई सुविधाजनक तरीका प्रतीत नहीं होता है, इसलिए मैंने उन नोड्स पर बहुत सारे नेस्टेड की कोशिश की, लेकिन उन नोड्स पर सामान, लेकिन इसे काम नहीं कर सकता। क्या कोई मुझे नोड के बच्चे नोड्स के साथ काम करने के लिए कुछ नमूना कोड प्रदान कर सकता है, लेकिन समान माता-पिता नोड्स के बच्चे नोड्स को पृथक रखते हुए?

+0

यहां एक ही चीज़ की तलाश में आया, निराश नहीं था। बस एक एफवाईआई, मैंने बस jsk/adk से osm.bz2 फ़ाइलों को पढ़ने के लिए अपना उपयोग सोर्स किया है https://github.com/spyhunter99/osmreader – spy

+0

@spy अच्छा लग रहा है, साझा करने के लिए धन्यवाद! – FWeigl

उत्तर

7

यह मैं यह कैसे पार्स होता है। आप इसका उपयोग करने के लिए स्वतंत्र हैं, लेकिन आपको Way कक्षा के लिए अपने आप पर कार्यान्वयन के साथ आना होगा! :)

List<Way> allWays = new ArrayList<Way>(); 
Way way; 
int eventType; 
while((eventType = parser.getEventType())!=XmlPullParser.END_DOCUMENT){ 
    if(eventType==XmlPullParser.START_TAG) { 
     if("nd".equals(parser.getName()) { 
      way.addNd(parser.getAttributeValue(0)); 
     } 
     else if("way".equals(parser.getName()) { 
      way = new Way(); 
     } 
    } 
    else if(eventType==XmlPullParser.END_TAG) { 
     if("way".equals(parser.getName()) { 
      allWays.add(way); 
     } 
    } 
    parser.next(); 
} 
बेशक

अगर एक्सएमएल आप के लिए आ रहा भी एक मामूली सा अलग इस सटीक कोड काम नहीं कर सकता है। दोबारा, मैं इसे पूछताछ के लिए एक अभ्यास के रूप में छोड़ दूंगा।

+0

के साथ मेरी सहायता करें मैं इसे थोड़ा अलग कर दूंगा लेकिन इससे मुझे अधिकार मिला दिशा। धन्यवाद! – FWeigl

+0

@ एस्कोरबिन, मुझे एक ही समस्या का सामना करना पड़ रहा है और मैं XmlPullParsing में नया हूं कृपया मेरी मदद करें। मैंने अपना प्रश्न पोस्ट कर दिया है कृपया यह जांचें http://stackoverflow.com/questions/17807718/how-to-get-child-or-sub-tags-in-xml-using-xmlpullparsing-in-android –

+0

मुझे भी सामना करना पड़ रहा है समस्या http://stackoverflow.com/questions/39391267/how-can-i-identify-same-xml-tag-second-time –

2

आप नीचे दिए गए कोड का उपयोग कर सकते हैं:

int eventType=parser.getEventType(); 
    while(eventType!=XmlPullParser.END_DOCUMENT){ 
     if(eventType==XmlPullParser.START_TAG 
       && parser.getName().equals("nd"){ 
       //process your node... 
     } 
     parser.next(); 
    } 
+0

कृपया मुझे इस http://stackoverflow.com/questions/39391267/how-can-i-identify-same-xml-tag-second-time –

संबंधित मुद्दे