• Java读取、创建xml(通过dom方式)文档版


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

    1.创建一个DocumentBuilderFactory的实例dbf

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    2.通过dbf创建一个DocumentBuilder 出来db
     DocumentBuilder db = dbf.newDocumentBuilder();
    3.利用db解析文档赋值给Document对象
     Document document = db.parse(fileName);
    4.获取根节点             
     Element root = doc.getDocumentElement(); 

    5.获取根节点

    root.getNodeName();

    6.获取子节点

    NodeList employeeInfo = root.getChildNodes();

    7.遍历子节点

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

    8.获取节点的名称和节点得值

    employeeInfo.item(j).getNodeName();

    employeeInfo.item(j).getNodeValue();

    创建一个接口

    XmlInterface.java

    public interface XmlInterface {
     
            /**
            * 建立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:
     
    解析完毕
  • 相关阅读:
    Python操作Excel表格
    Python爬虫实战:爬取美食节川菜信息
    超级实用的Python网络爬虫反反爬策略之构造UA池及IP代理池
    Python 静态方法
    IDEA连接远程服务器Docker部署Spring Boot项目
    Dockerfile 解析
    Python爬虫实战-统计博客园阅读量问题
    Docker 容器数据卷
    Docker镜像
    PL/SQL
  • 原文地址:https://www.cnblogs.com/handsome1013/p/5149047.html
Copyright © 2020-2023  润新知