Java读取、创建xml(通过dom方式)

http://www.cnblogs.com/wangchenyang/archive/2011/08/23/2150530.html


创建一个接口

XmlInterface.java


  /** 

        * 建立XML文档 

        * @param fileName 文件全路径名称 

        */

        public void createXml(String fileName); 

        /** 

        * 解析XML文档 

        * @param fileName 文件全路径名称 

        */

        public void parserXml(String fileName); 

}

接口实现

XmlImpl.java


package com.test.xml;

 

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.PrintWriter;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import javax.xml.transform.OutputKeys;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerConfigurationException;

import javax.xml.transform.TransformerException;

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.Node;

import org.w3c.dom.NodeList;

import org.xml.sax.SAXException;

 

public class XmlImpl implements XmlInterface{

    private Document document;

 

    public void init() {

        try {

            DocumentBuilderFactory factory = DocumentBuilderFactory

                    .newInstance();

            DocumentBuilder builder = factory.newDocumentBuilder();

            this.document = builder.newDocument();

        } catch (ParserConfigurationException e) {

            System.out.println(e.getMessage());

        }

    }

 

    public void createXml(String fileName) {

        Element root = this.document.createElement("scores"); 

        this.document.appendChild(root); 

        Element employee = this.document.createElement("employee"); 

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

        name.appendChild(this.document.createTextNode("wangchenyang")); 

        employee.appendChild(name); 

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

        sex.appendChild(this.document.createTextNode("m")); 

        employee.appendChild(sex); 

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

        age.appendChild(this.document.createTextNode("26")); 

        employee.appendChild(age); 

        root.appendChild(employee); 

        TransformerFactory tf = TransformerFactory.newInstance();

        try {

            Transformer transformer = tf.newTransformer();

            DOMSource source = new DOMSource(document);

            transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");

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

            PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));

            StreamResult result = new StreamResult(pw);

            transformer.transform(source, result);

            System.out.println("生成XML文件成功!");

        } catch (TransformerConfigurationException e) {

            System.out.println(e.getMessage());

        } catch (IllegalArgumentException e) {

            System.out.println(e.getMessage());

        } catch (FileNotFoundException e) {

            System.out.println(e.getMessage());

        } catch (TransformerException e) {

            System.out.println(e.getMessage());

        }

    }

 

    public void parserXml(String fileName) {

        try {

            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

            DocumentBuilder db = dbf.newDocumentBuilder();

            Document document = db.parse(fileName);

             

            NodeList employees = document.getChildNodes();

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

                Node employee = employees.item(i);

                NodeList employeeInfo = employee.getChildNodes();

                for (int j = 0; j < employeeInfo.getLength(); j++) {

                    Node node = employeeInfo.item(j);

                    NodeList employeeMeta = node.getChildNodes();

                    for (int k = 0; k < employeeMeta.getLength(); k++) {

                        System.out.println(employeeMeta.item(k).getNodeName()

                                + ":" + employeeMeta.item(k).getTextContent());

                    }

                }

            }

            System.out.println("解析完毕");

        } catch (FileNotFoundException e) {

            System.out.println(e.getMessage());

        } catch (ParserConfigurationException e) {

            System.out.println(e.getMessage());

        } catch (SAXException e) {

            System.out.println(e.getMessage());

        } catch (IOException e) {

            System.out.println(e.getMessage());

        }

    }

}

测试

?
public class Main {
public static void main(String args[]){
XmlImpl dd= new XmlImpl();
String str= "D:/grade.xml" ;
dd.init();
dd.createXml(str); //创建xml
dd.parserXml(str); //读取xml
}
}

结果

生成xml

复制代码
<?xml version="1.0" encoding="GB2312"?>
<scores>
<employee>
<name>wangchenyang</name>
<sex>m</sex>
<age>26</age>
</employee>
</scores>
复制代码

读取xml

?
生成XML文件成功!
#text:
name:wangchenyang
#text:
sex:m
#text:
age:26
#text:
解析完毕



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值