Java解析XML文件

by57 9年前發布 | 2K 次閱讀 Java

用Java解析XML文檔,最常用的有兩種方法:使用基于事件的XML簡單API (Simple API for XML)稱為SAX和基于樹和節點的文檔對象模型(Document Object Module)稱為DOM。

Sun公司提供了Java API for XML Parsing(JAXP)接口來使用SAX和DOM,通過JAXP,我們可以使用任何與JAXP兼容的XML解析器。 JAXP接口包含了三個包:

  1. org.w3c.dom W3C推薦的用于XML標準規劃文檔對象模型的接口。
  2. org.xml.sax用于對XML進行語法分析的事件驅動的XML簡單API(SAX)
  3. javax.xml.parsers解析器工廠工具,程序員獲得并配置特殊的特殊語法分析器。

java XML parser

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class DomParse {
public DomParse(){

    DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();  

    try {  
        DocumentBuilder dombuilder=domfac.newDocumentBuilder();  
        InputStream is=new FileInputStream("WebRoot/WEB-INF/hell.xml");  
        Document doc=dombuilder.parse(is);  
        Element root=doc.getDocumentElement();  
        NodeList books=root.getChildNodes();  

        if(books!=null){  
            for(int i=0;i<books.getLength();i++){  
                Node book=books.item(i);  
                if(book.getNodeType()==Node.ELEMENT_NODE){  
                    String email=book.getAttributes().getNamedItem("email").getNodeValue();  
                    System.out.println(email);  
                    for(Node node=book.getFirstChild();node!=null;node=node.getNextSibling()){  
                        if(node.getNodeType()==Node.ELEMENT_NODE){  
                            if(node.getNodeName().equals("name")){  
                                String name=node.getNodeValue();  
                                String name1=node.getFirstChild().getNodeValue();  
                                System.out.println(name);  
                                System.out.println(name1);  
                            }  

                            if(node.getNodeName().equals("price")){  
                                String price=node.getFirstChild().getNodeValue();  
                                System.out.println(price);  
                            }  
                        }  
                    }  
                }  
            }  
        }  
    } catch (ParserConfigurationException e) {  
        e.printStackTrace();  
   } catch (FileNotFoundException e) {  
         e.printStackTrace();  
    } catch (SAXException e) {  
        e.printStackTrace();  
    } catch (IOException e) {  
        e.printStackTrace();  
    }  
}  

public static void main(String[] args)   
{  
    new DomParse();  
}      

} </pre>

 本文由用戶 by57 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!