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

来源:互联网 发布:python 多进程通信 编辑:程序博客网 时间:2024/05/29 04:54

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

创建一个接口

XmlInterface.java

?
publicinterface XmlInterface {
 
        /**
        * 建立XML文档
        * @param fileName 文件全路径名称
        */
        publicvoid createXml(String fileName);
        /**
        * 解析XML文档
        * @param fileName 文件全路径名称
        */
        publicvoid parserXml(String fileName);
}

接口实现

XmlImpl.java

?
packagecom.test.xml;
 
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importjavax.xml.parsers.ParserConfigurationException;
importjavax.xml.transform.OutputKeys;
importjavax.xml.transform.Transformer;
importjavax.xml.transform.TransformerConfigurationException;
importjavax.xml.transform.TransformerException;
importjavax.xml.transform.TransformerFactory;
importjavax.xml.transform.dom.DOMSource;
importjavax.xml.transform.stream.StreamResult;
importorg.w3c.dom.Document;
importorg.w3c.dom.Element;
importorg.w3c.dom.Node;
importorg.w3c.dom.NodeList;
importorg.xml.sax.SAXException;
 
publicclass 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 = newDOMSource(document);
            transformer.setOutputProperty(OutputKeys.ENCODING,"gb2312");
            transformer.setOutputProperty(OutputKeys.INDENT,"yes");
            PrintWriter pw = newPrintWriter(newFileOutputStream(fileName));
            StreamResult result = newStreamResult(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(inti = 0; i < employees.getLength(); i++) {
                Node employee = employees.item(i);
                NodeList employeeInfo = employee.getChildNodes();
                for(intj = 0; j < employeeInfo.getLength(); j++) {
                    Node node = employeeInfo.item(j);
                    NodeList employeeMeta = node.getChildNodes();
                    for(intk = 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());
        }
    }
}

测试

?
publicclass 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:
 
解析完毕


原创粉丝点击