当前位置: 代码迷 >> Java Web开发 >> sax解析xml时平级标签下多个相同标签只解析了第一个标签。(希望都来给点意见)
  详细解决方案

sax解析xml时平级标签下多个相同标签只解析了第一个标签。(希望都来给点意见)

热度:5398   发布时间:2016-04-10 23:05:56.0
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;
}
    }  

------解决方案--------------------
是不是没有循环。判断。
  相关解决方案