`

Dom方式创建/解析xml

    博客分类:
  • xml
阅读更多

 

如右图所示,将使用Dom方式,创建图一的xml,并解析图二中更为复杂的xml

 

1.新建一个类,Domdemo.java,代码如下:

package com.test;
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;

import com.inter.XmlDocument;

public class DomDemo implements XmlDocument
{
    private Document document;
    private String fileName;

    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("employees");
        this.document.appendChild(root);
        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("男"));
        employee.appendChild(sex);
        Element age = this.document.createElement("age");
        age.appendChild(this.document.createTextNode("30"));
        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());
                    }
                }
            }
        } 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());
        }
        System.out.println("------dom方式解析完毕-------");
    }
}
 

 

2.编写测试类,TestDom.java,代码如下:

public class TestDom
{
    public static void main(String[] args)
    {
Domdemo   dom  =  new  Domdemo();
dom.init();
//创建的xml见图一
dom.createXml("D://employee.xml");
//解析的xml见图二
dom.parseXml("E://employee.xml");


          }
}
 


图一



  图二

 

 

  • 大小: 16.4 KB
  • 大小: 18.8 KB
0
6
分享到:
评论

相关推荐

    DOM XML教程/DOM参考手册/DOM解析XML

    - 解析XML:如何使用DOM解析器加载XML文件,并将之转换为DOM树。 - 遍历和查询DOM:`getElementsByTagName()`, `getElementById()`, `getElementsByClassName()`等方法的使用。 - 操作DOM:添加、删除和修改节点,...

    DOM解析XML 创建XML

    下面我们将深入探讨DOM解析XML以及如何创建XML。 DOM解析XML的过程分为以下几个步骤: 1. **加载XML文档**:首先,我们需要通过DOM解析器加载XML文档。在JavaScript中,可以使用`DOMParser`对象的`parseFromString...

    解析xml的三种方式DOM/SAX/PULL

    本文将深入探讨解析XML的三种主要方法:DOM(Document Object Model)、SAX(Simple API for XML)和PULL解析。 1. DOM解析: DOM是W3C推荐的标准解析方式,它将整个XML文档加载到内存中,构建一个树形结构,称为...

    使用dom4j和jaxen解析xml

    - **dom4j+jaxen操作XML**:首先使用dom4j解析XML,然后通过jaxen创建XPath对象并执行查询。查询结果可以是元素、属性或其他XML节点,根据需要进行进一步处理。 例如,以下代码展示了如何使用dom4j和jaxen解析XML...

    dom4j解析xml详解

    ### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...

    使用dom4j进行解析XML

    本文将详细介绍如何使用dom4j解析XML,并创建XML文档结构。 首先,我们需要引入dom4j库。如果你使用的是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;dom4j&lt;/groupId&gt; &lt;artifactId&gt;dom4j&lt;/...

    Dom4j遍历解析XML

    ### Dom4j遍历解析XML知识点详解 #### 一、Dom4j简介及环境搭建 Dom4j(Document Object Model for Java)是一个Java语言的开源XML API,它提供了非常便捷的方式来解析、创建以及操作XML文档。相较于其他XML解析库...

    DOMParser解析xml

    DOMParser接口提供了解析XML字符串并创建DOM文档的方法,以便于开发者可以使用DOM API来查询、修改或操作XML数据。 以下是对"DOMParser解析XML"这一主题的详细说明: 1. **DOMParser的基本使用**: 使用DOMParser...

    DOM_XML.rar_DOM_dom xml_dom xml java_dom解析xml_java解析xml

    标题中的"DOM_XML.rar"可能是一个包含DOM解析XML相关示例的压缩文件,"DOM_dom xml_dom xml java_dom解析xml_java解析xml"这部分描述了文件的主要内容,即关于DOM(Document Object Model)在XML解析中的应用,特别...

    Dom方式解析XML

    本篇文章将详细探讨如何使用DOM(Document Object Model)方式在Android Studio环境下解析XML。 DOM是一种将XML文档映射成内存中的树形结构的解析方式,它允许开发者通过节点操作来访问和修改XML文档。DOM解析器会...

    java dom4j解析xml

    - 解析XML的基本步骤:创建解析器工厂,通过工厂创建解析器,解析器读取XML文件并生成Document对象。 3. **读取XML** - 使用`DocumentBuilder`解析XML文件,得到`Document`对象,这代表整个XML文档。 - 通过`...

    DOM4J 解析XML

    在解析XML时,DOM4J有两种主要的解析方式:SAX和DOM。SAX是一种基于事件的解析器,适用于处理大型XML文档,因为它不会将整个文档加载到内存中。DOM,即文档对象模型,会构建一个完整的XML树,适合小型或中等大小的...

    Android创建与解析XML(二)——详解Dom方式

    Dom方式创建与解析XML文档是一种使用编程语言,如Java,在Android平台实现的方式。这种方式利用了DOM(文档对象模型)的API,其中JAXP(Java API for XML Processing)提供的DocumentBuilder类是用来创建和解析XML...

    dom4j解析xml实例

    DOM4J是一个非常流行的、强大的Java XML API,它提供了灵活且高效的方式来解析、创建、修改XML文档。本文将深入探讨如何使用DOM4J进行XML解析,并通过实例来帮助理解。 首先,让我们了解DOM4J的基本概念。DOM4J是...

    Java解析xml配置文件,DOM4J解析xml配置文件,提供使用文档和源码下载

    在本教程中,我们将深入探讨如何使用DOM4J解析XML配置文件,并模拟处理`web.xml`中的`url-pattern`元素。 首先,让我们了解DOM4J的基本概念。DOM4J是一个基于Java的DOM模型的XML库,它扩展了标准的DOM API,增加了...

    DOM解析XML文件例子

    在这个例子中,我们将深入探讨如何使用DOM解析XML文件,以理解和掌握XML文档的结构,并进行数据提取、修改和创建。 首先,XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据,具有自描述性和...

    Android Dom解析XML

    总结来说,Android中使用DOM解析XML是一种常见且直观的方式,适合处理小规模的数据。结合ButterKnife库,可以方便地将解析结果与UI组件进行绑定,提高代码的可读性和维护性。但请注意,对于大文件,考虑使用SAX或者...

    Dom4解析XML数据示例

    本篇将深入探讨如何使用DOM4(Document Object Model Level 4)解析XML数据,以实现高效的数据处理。 DOM4是W3C发布的DOM标准的最新版本,它提供了更强大的功能和改进,使得开发者可以更方便地处理XML文档。DOM是一...

    QT下DOM读/写xml文档

    DOM解析器会将整个XML文件加载到内存,创建一个完整的文档对象模型,这样可以方便地通过节点遍历、查找、修改和更新XML数据。 以下是使用QT的DOM进行XML读写的一些核心知识点: 1. ** QDomDocument **:这是QT中的...

Global site tag (gtag.js) - Google Analytics