欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[XML]Dom创建,解析xml

程序员文章站 2022-05-29 08:19:53
...

测试源码

package com.david.test;

import java.awt.peer.SystemTrayPeer;
import java.io.File;
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.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.DOMException;
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 DomDecode {

    private Document document;
    private String fileName;

    public DomDecode(){
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            this.document = builder.newDocument();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        }
    }

    public void createXML(String fileName){
        try {
            Element root = this.document.createElement("employees");
            Element employee = this.document.createElement("employee");
            Element name = this.document.createElement("name");
            name.appendChild(this.document.createTextNode("张三"));
            employee.appendChild(name);
            Element sex = this.document.createElement("sex");
            sex.appendChild(this.document.createTextNode("man"));
            employee.appendChild(sex);
            Element age = this.document.createElement("age");
            age.appendChild(this.document.createTextNode("30"));
            employee.appendChild(age);
            root.appendChild(employee);
            this.document.appendChild(root);
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(this.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 (DOMException e) {
            e.printStackTrace();
        } catch (TransformerConfigurationException e) {
            e.printStackTrace();
        } catch (TransformerFactoryConfigurationError e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (TransformerException e) {
            e.printStackTrace();
        }
    }

    public void parserXml(String fileName){
        try {
            DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
            Document document = documentBuilder.parse(new File(fileName));
            NodeList rootNode = document.getChildNodes();
            Node employees = rootNode.item(0);
            NodeList employee = employees.getChildNodes();
            for (int i = 0; i < employee.getLength(); i++) {
                Node curEmployee = employee.item(i);
                NodeList employeeMeta = curEmployee.getChildNodes();
                for (int j = 0; j < employeeMeta.getLength(); j++) {
                    if (!employeeMeta.item(j).getTextContent().trim()
                            .equals(""))
                        System.out.println(employeeMeta.item(j).getNodeName()
                                + ":" + employeeMeta.item(j).getTextContent());
                }
                System.out.println("-----------------------");
            }
            System.out.println("解析完毕!");
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

转载于:https://my.oschina.net/u/3702584/blog/1547176