`

DOM生成和解析XML文档

阅读更多

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;        
import java.io.InputStream;
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;
/**
* 解析XML文档
* @param fileName 文件全路径名称
*/
public class DomDemo implements XmlDocument
{
    private String fileName;
    private Document document;
    public void init()throws Exception
    {
           
            try
            {
                    DocumentBuilderFactory factory=DocumentBuilderFactory .newInstance();
                DocumentBuilder db=factory.newDocumentBuilder();
                this.document=db.newDocument();
            }
            catch(ParserConfigurationException e)
            {
                    e.printStackTrace();
            }
    }
    //创建xml
    public void createXml(String fileName)throws Exception
    {
                  try
                  {
                          //创建根元素
                          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("xiaohua"));
                          //将元素添加到子元素中
                      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("30"));      
                      employee.appendChild(age);
                  //将子元素添加到根元素中
                          root.appendChild(employee);
                         TransformerFactory tf = TransformerFactory.newInstance();  
                             //此抽象类的实例能够将源树转换为结果树
                         Transformer transformer = tf.newTransformer();
                          // 创建带有 DOM 节点的新输入源
                          DOMSource source = new DOMSource(this.document);
                     //  设置转换中实际的输出属性
                          transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");                  
                          transformer.setOutputProperty(OutputKeys.INDENT, "yes");
                          //
                          PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
                          //充当转换结果的持有者,可以为 XML、纯文本、HTML 或某些其他格式的标记
                          StreamResult result = new StreamResult(pw);
                      //将 XML Source 转换为 Result
                          transformer.transform(source, result);
                          System.out.println("生成XML文件成功!");   
                          
                  }
                  catch(Exception ex)
                  {
                          ex.printStackTrace();
                  }      
    }
    //解析xml
    public void pareser(String fileName)throws Exception
    {
            try
             {
                    DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
                    DocumentBuilder db=dbf.newDocumentBuilder();
         
                    Document doc=db.parse(fileName);
                    NodeList employees=doc.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 list=node.getChildNodes();
                                     for(int k=0;k<list.getLength();k++)
                                     {
                                             System.out.println("节点名称:"+list.item(k).getNodeName()  +"----->"+"值:"+list.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 static void main(String[] args)throws Exception
    {
                DomDemo d=new DomDemo();
         d.init();
        // d.createXml("e:\\employees.xml");
         d.pareser("e:\\employees.xml");
    }
   
}
【小结】:
1.        为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU
2.        使用dom的解析步骤:
a 获取解析Document对象
b.进行三层遍历。(根节点 节点元素 节点 )
c 获取节点名称和值
3.生成步骤:
a.创建doucumnet对象
b.构造数
c创建 TransformerFactory,并由它产生Transformer对象。并设定有关的属性
d.产生DOMSource对象
e.产生StreamResult
f.调用  transformer.transform(source, result);
将原树转化为结果树

分享到:
评论

相关推荐

    JAVA 解析XML生成XML文档实例

    JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML

    利用Dom4j生成XML和解析XML

    在本文中,我们将学习如何使用 Dom4j 生成 XML 文档和解析 XML 文档。 生成 XML 文档 使用 Dom4j 生成 XML 文档非常简单。首先,我们需要创建一个 Document 对象,然后添加元素和属性。下面是一个生成 XML 文档的...

    dom4j解析xml详解

    - **数据交换**: 在不同的系统之间交换XML格式的数据,DOM4J可以轻松解析和生成XML文档。 - **配置文件解析**: 许多应用使用XML作为配置文件的格式,DOM4J可以方便地读取和更新这些配置信息。 - **Web服务**: 在SOAP...

    dom4j解析xml文件的压缩包

    4. **XPath支持**:DOM4J支持XPath表达式,这允许开发者根据XPath查询XML文档中的特定节点,极大提高了代码的可读性和效率。 5. **事件驱动解析(SAX)**:除了传统的DOM解析外,DOM4J还支持SAX解析器,这种解析...

    dom4j 解析写入xml

    1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件

    java dom4j解析xml

    Java DOM4J解析XML是一种常见的处理XML文档的技术,它提供了灵活且高效的API,使得开发者能够方便地读取、写入、修改以及操作XML文件。DOM4J是Java中一个非常强大的XML处理库,它结合了DOM、SAX和JDOM的优点,同时也...

    dom4J生成xml、解析xml、生成xml文件实例

    这篇博客()可能详细介绍了如何使用DOM4J来生成和解析XML文件,这对于处理XML文档的开发人员来说是非常有用的工具。 **1. 生成XML文件** 生成XML文件主要涉及以下步骤: - **创建Document对象**:DOM4J通过`...

    生成、解析xml的四种方式(dom,dom4j,sax,jdom)

    本文将详细介绍生成和解析XML的四种主要方法:DOM、DOM4J、SAX和JDOM。 1. DOM(Document Object Model) DOM是W3C组织推荐的一种解析XML的标准方式。它将XML文档视为一个树形结构,每个节点代表XML文档的一部分。...

    Dom4j解析和生成XML文档

    DOM4J解析XML文档: DOM4J通过构建DOM树(Document Object Model)来解析XML。DOM模型是一种将XML文档转换为内存中对象树的表示方式。在DOM4J中,我们可以使用`DocumentBuilderFactory`和`DocumentBuilder`来创建`...

    dom4j解析xml

    DOM4J是一个Java库,它为处理XML提供了强大的功能,包括读取、写入、修改和操作XML文档。这个库以其灵活性、效率和易用性而受到开发者的青睐。DOM4J是基于DOM(Document Object Model)的,但它通过提供更高级别的...

    dom4j解析xml,利用反射机制

    在这个项目中,我们利用DOM4J来解析XML文件,并通过Java的反射机制将解析出的信息存储到特定的类中。 首先,我们需要了解XML的基本概念。XML(Extensible Markup Language)是一种标记语言,常用于数据交换和结构化...

    DOMParser解析xml

    使用DOMParser解析XML文档,首先需要创建一个DOMParser实例,然后调用其`parseFromString()`方法,传入XML字符串作为参数。例如: ```javascript let parser = new DOMParser(); let xmlString = "&lt;root&gt;...

    dom4j解析xml文件jar包

    DOM4J是一个强大的Java...总结来说,DOM4J是一个功能强大、灵活的XML处理工具,它提供了丰富的功能来解析、操作和生成XML文档,广泛应用于各种Java项目中。其高效、易用的特性使其成为Java开发者处理XML的首选库之一。

    Java DOM 生成XML

    标签"解析XML和生成XML的必备选择"表明,DOM不仅适用于生成XML,也常用于解析XML文档。解析XML时,`DocumentBuilder`会构建一个DOM树,然后可以通过DOM API查询和修改树中的节点。 总结一下,Java DOM提供了一套...

    dom动态生成使用XML DOM生成XML.pdf

    通过使用XML DOM,开发者可以更加高效、灵活地创建和管理XML文档。本文介绍了XML DOM的基本概念、主要对象以及如何使用XMLDOMDocument对象创建XML文档的方法。掌握了这些知识,你就可以更轻松地在各种应用场景中使用...

    Dom4J生成XML的完整方法希望大家能用到

    Dom4J作为一款优秀的Java XML API,以其简洁、高效的特点,在生成、解析和操作XML文档方面表现突出。本文将深入探讨如何使用Dom4J库来创建XML文档,包括初始化文档、添加元素、设置属性、插入文本以及最终保存文档至...

    读取XML文件的四种方法

    使用DOM方法读取XML文件,需要创建DocumentBuilderFactory对象,获取DocumentBuilder对象,然后解析XML文件得到Document对象。最后,使用Document对象的getElementsByTagName方法获取指定标签的节点列表,并遍历节点...

Global site tag (gtag.js) - Google Analytics