XML:

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <books> 
  3.     <book> 
  4.      <name>java</name> 
  5.      <prise>99.0</prise> 
  6.      <author>11</author> 
  7.      <press>smg</press> 
  8.     </book> 
  9. </books>  

 

bean:

  1. public class BookBean {  
  2.  
  3.     private String name;  
  4.     private String prise;  
  5.     private String author;  
  6.     private String press;  
  7.       
  8.     public String getName() {  
  9.         return name;  
  10.     }  
  11.     public void setName(String name) {  
  12.         this.name = name;  
  13.     }  
  14.     public String getPrise() {  
  15.         return prise;  
  16.     }  
  17.     public void setPrise(String prise) {  
  18.         this.prise = prise;  
  19.     }  
  20.     public String getAuthor() {  
  21.         return author;  
  22.     }  
  23.     public void setAuthor(String author) {  
  24.         this.author = author;  
  25.     }  
  26.     public String getPress() {  
  27.         return press;  
  28.     }  
  29.     public void setPress(String press) {  
  30.         this.press = press;  
  31.     }  
  32.       

解析类: 

  1. import java.io.ByteArrayInputStream;  
  2. import java.io.File;  
  3. import java.io.FileInputStream;  
  4. import java.io.FileNotFoundException;  
  5. import java.io.IOException;  
  6. import java.io.InputStream;  
  7.  
  8. import org.dom4j.util.XMLErrorHandler;  
  9. import org.xml.sax.Attributes;  
  10. import org.xml.sax.ContentHandler;  
  11. import org.xml.sax.InputSource;  
  12. import org.xml.sax.Locator;  
  13. import org.xml.sax.SAXException;  
  14. import org.xml.sax.XMLReader;  
  15. import org.xml.sax.helpers.XMLReaderFactory;  
  16.  
  17.  
  18. public class XMLParseToBean implements ContentHandler {  
  19.  
  20.     private StringBuffer buffer = null;  
  21.     private BookBean bean;  
  22.  
  23.     @Override 
  24.     public void characters(char[] ch, int start, int length)  
  25.             throws SAXException {  
  26.         buffer.append(ch, start, length);  
  27.     }  
  28.  
  29.     @Override 
  30.     public void endDocument() throws SAXException {  
  31.  
  32.     }  
  33.  
  34.     @Override 
  35.     public void endElement(String uri, String localName, String name)  
  36.             throws SAXException {  
  37.         if (localName.equalsIgnoreCase("name")) {  
  38.             bean.setName(buffer.toString().trim());  
  39.         } else if (localName.equalsIgnoreCase("prise")) {  
  40.             bean.setName(buffer.toString().trim());  
  41.         } else if (localName.equalsIgnoreCase("author")) {  
  42.             bean.setName(buffer.toString().trim());  
  43.         } else if (localName.equalsIgnoreCase("press")) {  
  44.             bean.setName(buffer.toString().trim());  
  45.         }  
  46.         buffer.setLength(0);  
  47.     }  
  48.  
  49.     @Override 
  50.     public void endPrefixMapping(String prefix) throws SAXException {  
  51.  
  52.     }  
  53.  
  54.     @Override 
  55.     public void ignorableWhitespace(char[] ch, int start, int length)  
  56.             throws SAXException {  
  57.  
  58.     }  
  59.  
  60.     @Override 
  61.     public void processingInstruction(String target, String data)  
  62.             throws SAXException {  
  63.  
  64.     }  
  65.  
  66.     @Override 
  67.     public void setDocumentLocator(Locator locator) {  
  68.  
  69.     }  
  70.  
  71.     @Override 
  72.     public void skippedEntity(String name) throws SAXException {  
  73.  
  74.     }  
  75.  
  76.     @Override 
  77.     public void startDocument() throws SAXException {  
  78.  
  79.     }  
  80.  
  81.     @Override 
  82.     public void startElement(String uri, String localName, String name,  
  83.             Attributes atts) throws SAXException {  
  84.         buffer = new StringBuffer();  
  85.         if (localName.equalsIgnoreCase("book")) {  
  86.             bean = new BookBean();  
  87.         }  
  88.     }  
  89.  
  90.     @Override 
  91.     public void startPrefixMapping(String prefix, String uri)  
  92.             throws SAXException {  
  93.  
  94.     }  
  95.  
  96.     public StringBuffer getBuffer() {  
  97.         return buffer;  
  98.     }  
  99.  
  100.     public void setBuffer(StringBuffer buffer) {  
  101.         this.buffer = buffer;  
  102.     }  
  103.  
  104.     public BookBean getBean() {  
  105.         return bean;  
  106.     }  
  107.  
  108.     public void setBean(BookBean bean) {  
  109.         this.bean = bean;  
  110.     }  
  111.  
  112.     public static void main(String[] args) {  
  113.         String fileName = "test.xml";  
  114.         String filePath = "D:";  
  115.         File file = new File(filePath, fileName);  
  116.         InputStream strm = null;  
  117.           
  118.         try {  
  119.             strm = new FileInputStream(file);  
  120.         } catch (FileNotFoundException e1) {  
  121.             e1.printStackTrace();  
  122.         }  
  123.           
  124.         /**  
  125.          * 如果xml是String形式的则先转换成流  
  126.          */ 
  127.         //strm = new ByteArrayInputStream(orgXml.getBytes());   //orgXml是要解析的String形式的XML  
  128.  
  129.         InputSource Source = new InputSource(strm);  
  130.         XMLParseToBean hd = new XMLParseToBean();  
  131.  
  132.         try {  
  133.             XMLReader parser = XMLReaderFactory  
  134.                     .createXMLReader("org.apache.xerces.parsers.SAXParser");  
  135.  
  136.             parser.setErrorHandler(new XMLErrorHandler());  
  137.             parser.setContentHandler(hd);  
  138.  
  139.             // 启用验证(暂时不校验)  
  140.             parser.setFeature("http://xml.org/sax/features/validation"false);  
  141.             parser  
  142.                     .setFeature(  
  143.                             "http://apache.org/xml/features/nonvalidating/load-external-dtd",  
  144.                             false);  
  145.             // 开始解析文档  
  146.             parser.parse(Source);  
  147.               
  148.             //获取生成的bean  
  149.             hd.getBean();  
  150.         } catch (SAXException e) {  
  151.             e.printStackTrace();  
  152.         } catch (IOException e) {  
  153.             e.printStackTrace();  
  154.         }  
  155.     }