创建解析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());

        }

    }

}

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