SAX解析器和XAPI xml
问题描述:
我想用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的值?
任何想法? :)
答
你有兴趣看的值是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);
}
}
}
thx很多:) 非常容易使用^^ – demonking