您的位置:首页 > 编程语言 > Java开发

Java 操作XML文件

2013-08-06 20:45 316 查看
       有一个XML文件,将它的信息解析出来并保存在List数组中,看看如何来完成。解析XML文件的方式有很多,如DOM方式,这个把XML文件解析成一棵树,需要将XML文件全部加载后才能解析,有另一种方式来解析XML文件,就是使用SAX来解析XML文件,SAX是基于事件来处理XML文件中,当遇到XML中一个标识符时,就触发某个事件来处理它。

      使用SAX时,先让它继承DefaultHandler类,然后实际它的四个方法。

      public void startDocument() throws SAXException {  
       // 当读到第一个开始标签的时候,开始触发  
       list = new ArrayList<HashMap<String, String>>();  

      }

        public void startElement(String uri, String localName, String qName,  
           Attributes attributes) throws SAXException {  
       // 当遇到文档的开头的时候,调用这个方法  
       if (qName.equals(nodeName)) {  
           map = new HashMap<String, String>();  
       }  
       if (attributes != null && map != null) {  
           for (int i = 0; i < attributes.getLength(); i++)  
               map.put(attributes.getQName(i), attributes.getValue(i));  
       } 
    //   System.out.println(qName+"1111");
       currentTag = qName;  
   }  

        public void characters(char[] ch, int start, int length)  
           throws SAXException {  
       // 处理从xml文件所读取到的内容  
       if (currentTag != null && map != null) {  
           currentValue = new String(ch, start, length);  
           if (currentValue != null && !currentValue.trim().equals("")  
                   && !currentValue.trim().equals("\n")) {  
               map.put(currentTag, currentValue);  
           }  
       }  
       //System.out.println(currentTag+"\t"+currentValue+"222");
       currentTag = null;  
       currentValue = null;  
   }  

        public void endElement(String uri, String localName, String qName)  
           throws SAXException {  
       // 遇到结束标记的时候,调用此方法  
       if (qName.equals(nodeName)) {  
           list.add(map);  
           map = null;  
       }  
      // System.out.println(qName+"333");
   }  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: