如题,
这是xml,主要解析代码如下:
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (qName.equals("node")) {
XmlRead.node=new Node();
if (attributes.getLength()>0) {
XmlRead.node.setIdString(attributes.getValue("id").toString());
XmlRead.node.setLat(attributes.getValue("lat").toString());
XmlRead.node.setLon(attributes.getValue("lon").toString());
}
}
if (qName.equals("way")) {
XmlRead.way=new Way();
if (attributes.getLength()>0) {
XmlRead.way.setId(attributes.getValue("id").toString());
}
}
if (qName.equals("nd")) {
XmlRead.list=new ArrayList<String>();
if (attributes.getLength()>0) {
XmlRead.string=attributes.getValue("ref").toString();
// System.out.println(XmlRead.list.size());
}
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
//需要说明的是,因为每一个非空标签都有characters(),那么无法知道user子标签循环完了
//但是可以这样,如果不考虑子标签顺序可以判断是否解析到了最后一个子标签来判断
//或者直接在user标签的endElement()中添加即可。
if (qName.equals("node")) {
XmlRead.nodes.add(XmlRead.node);
XmlRead.node=null;
}
if (qName.equals("way")) {
XmlRead.way.setList(XmlRead.list);
XmlRead.ways.add(XmlRead.way);
System.out.println(XmlRead.list.size());
XmlRead.way=null;
XmlRead.list=null;
}
if (qName.equals("nd")) {
XmlRead.list.add(XmlRead.string);
XmlRead.string=null;
}
}
------解决方案--------------------
是不是没有循环。判断。