SAX Parser и XAPI xml

Я хочу разобрать XAPI xml с помощью SAXParser. Но теперь у меня проблема.

Сначала фрагмент 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"/>

And a snippet of my SAXParser code:

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?

У кого-нибудь есть идея? :)


person demonking    schedule 11.06.2012    source источник


Ответы (1)


Значения, которые вам интересны, являются атрибутами 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);
        }
    }
}
person nicholas.hauschild    schedule 11.06.2012