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

来源:互联网 发布:地狱通信软件下载 编辑:程序博客网 时间:2024/06/08 21:29

创建一个接口

XmlInterface.java

public interface XmlInterface {
 
        /**
        * 建立XML文档
        * @param fileName 文件全路径名称
        */
        publicvoid createXml(String fileName);
        /**
        * 解析XML文档
        * @param fileName 文件全路径名称
        */
        publicvoid 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 implementsXmlInterface{
    privateDocument document;
 
    publicvoid init() {
        try{
            DocumentBuilderFactory factory = DocumentBuilderFactory
                    .newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            this.document = builder.newDocument();
        }catch (ParserConfigurationException e) {
            System.out.println(e.getMessage());
        }
    }
 
    publicvoid 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(newFileOutputStream(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());
        }
    }
 
    publicvoid 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 {
 
    publicstatic void main(String args[]){
        XmlImpl dd=newXmlImpl();
        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
原创粉丝点击