日期:2014-05-17  浏览次数:20618 次

sax解析xml时同级标签下多个相同标签只解析了第一个标签。(希望都来给点意见)
如题,
这是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;
}
    }  

字段太多了,怎么处理(还是100分)