創建解析XML文件的三種解析方法(一)

用w3c解析

package w3c;

import java.io.File;

import java.io.FileOutputStream;

import java.util.Random;

 

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.transform.OutputKeys;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

 

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.NodeList;

 

 

publicclass w3c {

    publicstaticvoid main(String[] args) throws Exception{

       createXml();

    }

   

    //創建XML文檔並創建節點

    publicstaticvoid createXml()  throws Exception{

       //獲取XML解析器工廠類

       DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();

       //獲取XML解析器

       DocumentBuilder db = dbf.newDocumentBuilder();

       //獲取操作的document對象

       Document document = db.newDocument();

       //設置XML文件的版本

       document.setXmlVersion("1.0");

       //創建根節點

       Element root = document.createElement("students");

       //將根節點添加到document對象中

       document.appendChild(root);

       //聲明一個姓名的數組

       String nameList[] = {"呂布","趙雲","馬超","張飛","關羽","許褚","孫策","周瑜","夏侯淵","張頜","于禁","黃忠","典韋","曹仁","程普"};   

       String sexList[] = {"",""};

       //循環添加數據

       for(int i = 0 ;i < 20 ; i++){

           //創建根元素節點

           Element rootelement = document.createElement("student");

           //聲明參數ID

           String id ="";

           //循環生成一個9爲的隨機ID

           for(int j = 0; j< 9 ; j ++ ){

              id += new Random().nextInt(8)+1;

           }

           //設置根元素節點的屬性

           rootelement.setAttribute("id",id);

           //將根元素節點添加到根節點中

           root.appendChild(rootelement);

           //設置元素節點

           Element name = document.createElement("name");

           Element sex = document.createElement("sex");

           Element age = document.createElement("age");

           Element phone = document.createElement("phone");

           //給元素節點賦值

           name.setTextContent(nameList[new Random().nextInt(nameList.length)]);

           sex.setTextContent(sexList[new Random().nextInt(sexList.length)]);

           age.setTextContent(new Random().nextInt(20)+20+"");

           String tel ="";

           for(int k = 0; k< 7 ; k++ ){

              tel += new Random().nextInt(9);

           }

           phone.setTextContent("0756-"+tel);

           //將元素節點添加到根元素節點中

           rootelement.appendChild(name);

           rootelement.appendChild(sex);

           rootelement.appendChild(age);

           rootelement.appendChild(phone);

       }

       //開始把Document映射到文件

       TransformerFactory transFactory = TransformerFactory.newInstance();

       Transformer transFormer = transFactory.newTransformer();

        //生成的XML文件

       File file = new File("w3c.xml");

       //判斷XML文件存不存在,如果不存在則創建

       if(file.exists()){

            file.createNewFile();

       }

       //設置是否添加空格

       transFormer.setOutputProperty(OutputKeys.INDENT, "yes");

       //設置輸出文件的格式

       transFormer.setOutputProperty(OutputKeys.ENCODING, "utf-8");

       //輸出XML文件

       transFormer.transform(new DOMSource(document), new StreamResult(new FileOutputStream(file)));

       //輸出XML文件的路徑

       System.out.println(file.getAbsolutePath());

    }

    //解析XML文檔

    publicstaticvoid resolving() throws Exception{

       //獲取XML解析器工廠類

       DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();

       //獲取XML解析器

       DocumentBuilder db = dbf.newDocumentBuilder();

       //獲取操作的document對象

       Document document = db.parse(new File("w3c.xml"));

       //獲取XML文件的根元素節點

       NodeList root = document.getElementsByTagName("student");

       //循環根元素節點信息

       for(int i = 0 ; i < root.getLength() ;i++){

           Element student = (Element)root.item(i);

           System.err.println("id = "+student.getAttribute("id")+"   name = "

           +student.getElementsByTagName("name").item(0).getTextContent()+"   sex = "

           +student.getElementsByTagName("sex").item(0).getTextContent()+"   age = "

           +student.getElementsByTagName("age").item(0).getTextContent()+"   phone = "

           +student.getElementsByTagName("phone").item(0).getTextContent());

        }

    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章