2012-06-11 164 views
1

我想用SAXParser解析XAPI xml。 但現在我有一個問題。SAX解析器和XAPI xml

首先,XML的一個片段:

<node id="24924135" lat="49.8800274" lon="8.6453740" version="12" timestamp="2012-05-25T15:13:47Z" changeset="11699394" uid="61927" user="AlexPleiner"> 
<tag k="addr:city" v="Darmstadt"/> 
<tag k="addr:housenumber" v="41"/> 
<tag k="addr:postcode" v="64293"/> 
<tag k="addr:street" v="Kahlertstraße"/> 
<tag k="amenity" v="pub"/> 
<tag k="name" v="Kneipe 41"/> 
<tag k="note" v="DaLUG Meeting (4st Friday of month 19:30)"/> 
<tag k="smoking" v="no"/> 
<tag k="website" v="http://www.kneipe41.de/"/> 
<tag k="wheelchair" v="limited"/> 

和我SAXParser的代碼片段:

public void startElement(String uri, String localName, String qName, 
     Attributes atts) throws SAXException { 
    if (localName.equals("node")) { 
    // Neue Person erzeugen 
    poi = new POIS(); 

    poi.setLat(Float.parseFloat(atts.getValue("lat"))); 
    poi.setLon(Float.parseFloat(atts.getValue("lon"))); 
    } 
} 

public void endElement(String uri, String localName, String qName) throws SAXException { 


    poi.setHouseNo(currentValue); 


    if (localName.equals("addr:street")) { 
    poi.setStreet(currentValue); 
    } 

    if (localName.equals("amenity")) { 
    poi.setType(currentValue); 
    } 

} 

緯度和經度都沒有問題,但標籤「標籤」。

如何檢查「k」並獲得v的值?

任何想法? :)

回答

3

你有興趣看的值是XML屬性,並會在startElement(...)方法由Attributes參數傳入表示。

你需要做的是非常相似的,你做了什麼爲node元素。

public void startElement(String uri, String localName, String qName, 
      Attributes atts) throws SAXException 
{ 
    //your other node code   

    if(localname.equals("tag")) { 
     String k = atts.getValue("k"); 
     if(iAmInterestedInThisK(k)) { 
      String v = atts.getValue("v"); 
      doSomethingWithThisV(v); 
     } 
    } 
} 
+0

thx很多:) 非常容易使用^^ – demonking