[XML]Dom创建,解析xml

测试源码

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();
        }
    }
}
发布了170 篇原创文章 · 获赞 30 · 访问量 61万+

猜你喜欢

转载自blog.csdn.net/u010989191/article/details/53889515