Java 使用SAX解析xml文件

来源:互联网 发布:楷书钢笔推荐 知乎 编辑:程序博客网 时间:2024/05/29 10:29
下面的代码可以直接跑,希望能为初学使用SAX解析xml文件的朋友节省时间

Java代码
  1. package parseXML;   
  2.   
  3. import org.apache.xerces.parsers.SAXParser;   
  4. import org.xml.sax.Attributes;   
  5. import org.xml.sax.helpers.DefaultHandler;   
  6.   
  7. //第一种方法直接解析   
  8. public class SAXDemo extends DefaultHandler{   
  9.   
  10.     public static void main(String[] args) {   
  11.         try{   
  12.   
  13.             SAXParser parser =    
  14.                 (SAXParser)Class.forName("org.apache.xerces.parsers.SAXParser").newInstance();   
  15.             SAXDemo handler = new SAXDemo();   
  16.             parser.setContentHandler(handler);   
  17.             parser.parse("parseXML/test.xml");   
  18.                
  19.   
  20.         }catch(Exception e){   
  21.             System.out.println(e.toString());   
  22.         }   
  23.     }   
  24.        
  25.     public void startElement(String uri,String localName,String qName,Attributes attr){   
  26.        System.out.println("Element的开始 uri: "+uri+"| localName: "+localName+"| qName: "+qName);   
  27.        if(attr.getLength()>0){   
  28.            for(int i = 0;i<attr.getLength();i++){   
  29.                System.out.println(attr.getQName(i)+" = "+attr.getValue(i));   
  30.            }   
  31.        }   
  32.     }   
  33.        
  34.     public void endElement(String uri,String localName,String qName){   
  35.         System.out.println("Element的结束 uri: "+uri+"localName: "+localName+"qName: "+qName);   
  36.         System.out.println("=============================================================");   
  37.     }   
  38.        
  39. }  





Java代码
  1. package parseXML;   
  2.   
  3. import org.apache.xerces.parsers.SAXParser;   
  4. import org.xml.sax.Attributes;   
  5. import org.xml.sax.SAXException;   
  6. import org.xml.sax.helpers.AttributesImpl;   
  7. import org.xml.sax.helpers.DefaultHandler;   
  8. import org.xml.sax.helpers.XMLFilterImpl;   
  9.   
  10. //第二种方法:使用filter解析   
  11. public class SAXDemo2 extends DefaultHandler{   
  12.   
  13.     public static void main(String[] args) {   
  14.         try{   
  15.             //生成SAXParser   
  16.             SAXParser parser =    
  17.                 (SAXParser)Class.forName("org.apache.xerces.parsers.SAXParser").newInstance();   
  18.             //生成Handler   
  19.             SAXDemo2 handler = new SAXDemo2();   
  20.            
  21.             FilterHandler filter = new FilterHandler();   
  22.   
  23.             //将刚才生成的handler和parser配置进filter   
  24.             filter.setParent(parser);   
  25.             filter.setContentHandler(handler);   
  26.                
  27.             filter.parse("parseXML/test.xml");   
  28.         }catch(Exception e){   
  29.             System.out.println(e.toString());   
  30.         }   
  31.     }   
  32.        
  33.     public void startElement(String uri,String localName,String qName,Attributes attr){   
  34.        System.out.println("Element的开始 uri: "+uri+"| localName: "+localName+"| qName: "+qName);   
  35.        if(attr.getLength()>0){   
  36.            for(int i = 0;i<attr.getLength();i++){   
  37.                System.out.println(attr.getQName(i)+" = "+attr.getValue(i));   
  38.            }   
  39.        }   
  40.     }   
  41.        
  42.     public void endElement(String uri,String localName,String qName){   
  43.         System.out.println("Element的结束 uri: "+uri+"localName: "+localName+"qName: "+qName);   
  44.         System.out.println("=============================================================");   
  45.     }   
  46.        
  47.     static class FilterHandler extends XMLFilterImpl{   
  48.         int index = 0;   
  49.            
  50.         public void startElement(String uri,String localName,String qName,Attributes attr) throws SAXException{   
  51.             AttributesImpl attrImpl = new AttributesImpl(attr);   
  52.             for(int i = 0;i<attrImpl.getLength();i++){   
  53.                 if(attrImpl.getQName(i).toUpperCase().equals("ID")){   
  54.                     attrImpl.removeAttribute(i);   
  55.                     break;   
  56.                 }   
  57.             }   
  58.             attrImpl.addAttribute("","id","id","ID",String.valueOf(index++));   
  59.             super.startElement(uri,localName,qName,attrImpl);   
  60.         }   
  61.            
  62.         public void endElement(String uri,String localName,String qName) throws SAXException{   
  63.             super.endElement(uri,localName,qName);   
  64.         }   
  65.            
  66.         public void characters(char[] ch,int iStart,int iLength) throws SAXException{   
  67.             super.characters(ch,iStart,iLength);   
  68.         }   
  69.     }   
  70. }  
原创粉丝点击