1. 程式人生 > >使用DOM解析xml文件

使用DOM解析xml文件

class onf get 1.0 sax elements div dom stat

使用DOM解析xml文件

要解析的xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<Languages cat="it">
  <lan id="1">
    <name>java</name>
    <ide>Eclipse</ide>
  </lan>
  <lan id="2">
    <name>Swift</name>
    <ide>Xcode</ide>
  </lan>
<lan id="3"> <name>C#</name> <ide>Visual Studio</ide> </lan> </Languages>

解析xml的代碼如下:

public class Dealxml {

  public static void main(String[] args) {
    DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
    try {
      DocumentBuilder builder
=factory.newDocumentBuilder(); Document document=builder.parse(new File("language.xml")); //獲取xml的根元素 Element root=document.getDocumentElement(); System.out.println("cat="+root.getAttribute("cat")); NodeList nlist=root.getElementsByTagName("lan"); for(int i=0;i<nlist.getLength();i++){ System.out.println(
"-----------------"); Element lan=(Element) nlist.item(i); System.out.println("id="+lan.getAttribute("id")); NodeList clist=lan.getChildNodes(); for(int j=0;j<clist.getLength();j++){ Node c= clist.item(j); if(c instanceof Element){ System.out.println(c.getNodeName()+"="+c.getTextContent()); } } } } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

基本步驟差不多就是:

首先是先獲得根元素

然後getElementByTagName()獲得相應標簽的node集合

通過集合,如list中的item()獲得集合中的具體元素

最後根據getTextContent()獲得具體元素的文本內容

備註:在最後加上判斷是否為Element對象的操作,是因為xml文件中的縮進空格這些會被視為一個空節點輸出,所以要加上一個判斷

使用DOM解析xml文件