java解析xml汇总

来源:互联网 发布:计算机最小的数据单位 编辑:程序博客网 时间:2024/05/17 07:41

各种方法都用过。现在总结一下。 经常记不住,要找资料。现在总结一下。

xpath 语法 http://www.w3school.com.cn/xpath/xpath_syntax.asp

xml 文件如下:

[html] view plaincopy
  1. <?xml version="1.0" encoding="ISO-8859-1"?>  
  2. <bookstore>  
  3. <book category="COOKING">  
  4.   <title lang="en">Everyday Italian</title>  
  5.   <author>Giada De Laurentiis</author>  
  6.   <year>2005</year>  
  7.   <price>30.00</price>  
  8.   <aa>  
  9.     <bb>  
  10.         <cc>ccccc</cc>  
  11.     </bb>  
  12.   </aa>  
  13. </book>  
  14.   
  15. <book category="CHILDREN">  
  16.   <title lang="en">Harry Potter</title>  
  17.   <author>J K. Rowling</author>  
  18.   <year>2005</year>  
  19.   <price>29.99</price>  
  20. </book>  
  21.   
  22. <book category="WEB">  
  23.   <title lang="en">XQuery Kick Start</title>  
  24.   <author>James McGovern</author>  
  25.   <author>Per Bothner</author>  
  26.   <author>Kurt Cagle</author>  
  27.   <author>James Linn</author>  
  28.   <author>Vaidyanathan Nagarajan</author>  
  29.   <year>2003</year>  
  30.   <price>49.99</price>  
  31. </book>  
  32.   
  33. <book category="WEB">  
  34.   <title lang="en">Learning XML</title>  
  35.   <author>Erik T. Ray</author>  
  36.   <year>2003</year>  
  37.   <price>39.95</price>  
  38. </book>  
  39.   
  40. </bookstore>  



[java] view plaincopy
  1. package sort;  
  2. import javax.xml.parsers.DocumentBuilder;  
  3. import javax.xml.parsers.DocumentBuilderFactory;  
  4. import org.w3c.dom.Document;  
  5. public class D2 {  
  6.     /** 
  7.      * 直接使用DOM解析 
  8.      * @param args 
  9.      * @throws Exception 
  10.      */  
  11.     public static void main(String[] args) throws Exception{  
  12.           
  13.         DocumentBuilder sb =  DocumentBuilderFactory.newInstance().newDocumentBuilder();  
  14.           
  15.         Document root = sb.parse(D2.class.getClassLoader().getResourceAsStream("NewFile.xml"));  
  16.           
  17.         System.out.println(root.getChildNodes().item(0).getNodeName());  
  18.           
  19.     }  
  20. }  


[java] view plaincopy
  1. package sort;  
  2.   
  3. import javax.xml.parsers.SAXParser;  
  4. import javax.xml.parsers.SAXParserFactory;  
  5.   
  6. import org.xml.sax.Attributes;  
  7. import org.xml.sax.SAXException;  
  8. import org.xml.sax.helpers.DefaultHandler;  
  9.   
  10. import com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl;  
  11.   
  12. public class D {  
  13.   
  14.     /** 
  15.      * 使用SAX解析 
  16.      * @param args 
  17.      * @throws Exception 
  18.      */  
  19.     public static void main(String[] args) throws Exception {  
  20.           
  21.         SAXParserFactory factory = SAXParserFactoryImpl.newInstance();  
  22.         SAXParser parser = factory.newSAXParser() ;  
  23.         parser.parse(D.class.getClassLoader().getResourceAsStream("NewFile.xml"),   
  24.                 new DefaultHandler(){  
  25.   
  26.                     @Override  
  27.                     public void characters(char[] ch, int start, int length)  
  28.                             throws SAXException {  
  29.                         System.out.println("characters");  
  30.                     }  
  31.   
  32.                     @Override  
  33.                     public void endDocument() throws SAXException {  
  34.                         // TODO Auto-generated method stub  
  35.                         System.out.println("endDocument");  
  36.                     }  
  37.   
  38.                     @Override  
  39.                     public void endElement(String uri, String localName,  
  40.                             String qName) throws SAXException {  
  41.                         // TODO Auto-generated method stub  
  42.                         System.out.println("endElement");  
  43.                     }  
  44.   
  45.                     @Override  
  46.                     public void startDocument() throws SAXException {  
  47.                         // TODO Auto-generated method stub  
  48.                         System.out.println("startDocument");  
  49.                     }  
  50.   
  51.                     @Override  
  52.                     public void startElement(String uri, String localName,  
  53.                             String qName, Attributes attributes)  
  54.                             throws SAXException {  
  55.                         // TODO Auto-generated method stub  
  56.                         System.out.println("startElement");  
  57.                     }  
  58.               
  59.         }) ;  
  60.           
  61.           
  62.     }  
  63.       
  64. }  



[java] view plaincopy
  1. package sort;  
  2.   
  3. import javax.xml.stream.XMLInputFactory;  
  4. import javax.xml.stream.XMLStreamReader;  
  5.   
  6. public class D3 {  
  7.   
  8.     /** 
  9.      * 使用XMLStream解析 
  10.      * @param args 
  11.      * @throws Exception 
  12.      */  
  13.     public static void main(String[] args) throws Exception {  
  14.   
  15.         XMLInputFactory xmlFactor = XMLInputFactory.newFactory();  
  16.   
  17.         XMLStreamReader reader =   
  18.             xmlFactor.createXMLStreamReader(D3.class.getClassLoader().getResourceAsStream("NewFile.xml"));  
  19.         while(reader.hasNext()){  
  20.             int point = reader.next() ;  
  21.             switch(point){  
  22.             case XMLStreamReader.START_ELEMENT :  
  23.                 System.out.println("start_element");  
  24.             case XMLStreamReader.END_ELEMENT :  
  25.                 // do something...  
  26.             }  
  27.   
  28.         }  
  29.   
  30.     }  
  31.   
  32. }  


[java] view plaincopy
  1. package sort;  
  2.   
  3. import org.dom4j.Document;  
  4. import org.dom4j.io.SAXReader;  
  5.   
  6. /** 
  7.  * 使用DOM4j XPATH解析XML (需要加入依赖jar文件) 
  8.  * @author zhoufeng 
  9.  * 
  10.  */  
  11. public class D4 {  
  12.       
  13.     public static void main(String[] args) throws Exception{  
  14.           
  15.         SAXReader reader = new SAXReader() ;  
  16.           
  17.         Document root = reader.read(D4.class.getClassLoader().getResourceAsStream("NewFile.xml"));  
  18.           
  19.         /* 选择所有的cc节点 */  
  20.         System.out.println(root.selectNodes("//cc").size());;  
  21.           
  22.         /*选择所有的book节点,并且有子节点author的*/  
  23.         System.out.println((root.selectNodes("//book[author]").size()));;  
  24.           
  25.         /* 选择所有book节点,并且有属性category的   */  
  26.         System.out.println((root.selectNodes("//book[@category]").size()));;  
  27.           
  28.         /* 选择所有book节点,并且有子节点author值为James McGovern ,并且还有category属性节点值为WEB   下面的price节点*/  
  29.         System.out.println(root.selectNodes("//book[author='James McGovern'][@category='WEB']/price").size());;  
  30.             
  31.     }  
  32.   
  33. }  


转自:http://blog.csdn.net/is_zhoufeng/article/details/8553184

0 0
原创粉丝点击