`

JAVA 创建与解析XML

阅读更多
JAVA 创建与解析XML
package xmllab;

import java.io.File;
import java.io.FileWriter;
import java.io.StringReader;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**

* @author Holen Chen

*/

public class Dom4jDemo {
    public Dom4jDemo() {
    }

    /**

      * 建立一个XML文档,文档名由输入属性决定

      * @param filename 需建立的文件名

      * @return 返回操作结果, 0表失败, 1表成功

      */

     public int createXMLFile(String filename){
        /** 返回操作结果, 0表失败, 1表成功 */
        int returnValue = 0;
        /** 建立document对象 */
        Document document = DocumentHelper.createDocument();//<?xml version="1.0" encoding="UTF-8"?>
        /** 建立XML文档的根books */
        Element booksElement = document.addElement("books");//<books></books>
        /** 加入一行注释 */
        booksElement.addComment("This is a test for dom4j, holen, 2004.9.11");//<books><!--This is a test for dom4j, holen, 2004.9.11--></books>
        /** 加入第一个book节点 */
        Element bookElement = booksElement.addElement("book");//<books><!--This is a test for dom4j, holen, 2004.9.11--><book></book></books>
        /** 加入show属性内容 */
        bookElement.addAttribute("show","yes");//<books><!--This is a test for dom4j, holen, 2004.9.11--><book show="yes"></book></books>
        /** 加入title节点 */
        Element titleElement = bookElement.addElement("title");//<books><!--This is a test for dom4j, holen, 2004.9.11--><book show="yes"><title></title></book></books>
        /** 为title设置内容 */
        titleElement.setText("Dom4j Tutorials");//<books><!--This is a test for dom4j, holen, 2004.9.11--><book show="yes"><title>Dom4j Tutorials</title></book></books>
        /** 类似的完成后两个book */
        bookElement = booksElement.addElement("book");
        bookElement.addAttribute("show","yes");
        titleElement = bookElement.addElement("title");
        titleElement.setText("Lucene Studing");
        bookElement = booksElement.addElement("book");
        bookElement.addAttribute("show","no");
        titleElement = bookElement.addElement("title");
        titleElement.setText("测试");
        /** 加入owner节点 */
        Element ownerElement = booksElement.addElement("owner");
        ownerElement.setText("O'Reilly");
        try{
            /** 将document中的内容写入文件中 */
         /** 格式化输出 */

            OutputFormat format = OutputFormat.createPrettyPrint();

            /** 指定XML编码 */

            format.setEncoding("GBK");
            XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)),format);
            writer.write(document);
            writer.close();
            /** 执行成功,需返回1 */
            returnValue = 1;
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return returnValue;
     }

     /**
       * 修改XML文件中内容,并另存为一个新文件
       * 重点掌握dom4j中如何添加节点,修改节点,删除节点
       * @param filename 修改对象文件
       * @param newfilename 修改后另存为该文件
       * @return 返回操作结果, 0表失败, 1表成功
       */

      public int ModiXMLFile(String filename,String newfilename){
         int returnValue = 0;
         try{
             SAXReader saxReader = new SAXReader();
             Document document = saxReader.read(new File(filename));
             //Document document=saxReader.read(new StringReader(filename));
             /** 修改内容之一: 如果book节点中show属性的内容为yes,则修改成no */
             /** 先用xpath查找对象 */
             List list = document.selectNodes("/books/book/@show" );
             Iterator iter = list.iterator();
             while(iter.hasNext()){
                Attribute attribute = (Attribute)iter.next();
                if(attribute.getValue().equals("yes")){
                    attribute.setValue("no");
                }
             }
             /**
              * 修改内容之二: 把owner项内容改为Tshinghua
              * 并在owner节点中加入date节点,date节点的内容为2004-09-11,还为date节点添加一个属性type
              */
             list = document.selectNodes("/books/owner" );
             iter = list.iterator();
             if(iter.hasNext()){
                Element ownerElement = (Element)iter.next();
                ownerElement.setText("Tshinghua");
                Element dateElement = ownerElement.addElement("date");
                dateElement.setText("2007-09-06");
                dateElement.addAttribute("type","Gregorian calendar");
             }

             /** 修改内容之三: 若title内容为Dom4j Tutorials,则删除该节点 */

             list = document.selectNodes("/books/book");

             iter = list.iterator();

             while(iter.hasNext()){

                Element bookElement = (Element)iter.next();

                Iterator iterator = bookElement.elementIterator("title");

                 while(iterator.hasNext()){

                    Element titleElement=(Element)iterator.next();

                    if(titleElement.getText().equals("Dom4j Tutorials")){

                       bookElement.remove(titleElement);

                    }

                }

             }



             try{

                /** 将document中的内容写入文件中 */

                XMLWriter writer = new XMLWriter(new FileWriter(new File(newfilename)));

                writer.write(document);

                writer.close();

                /** 执行成功,需返回1 */

                returnValue = 1;

             }catch(Exception ex){

                ex.printStackTrace();

             }



         }catch(Exception ex){

             ex.printStackTrace();

         }

         return returnValue;

      }


      /**

         * 格式化XML文档,并解决中文问题

         * @param filename

         * @return

         */

        public int formatXMLFile(String filename){

           int returnValue = 0;

           try{

               SAXReader saxReader = new SAXReader();

               Document document = saxReader.read(new File(filename));

               XMLWriter writer = null;

               /** 格式化输出 */

               OutputFormat format = OutputFormat.createPrettyPrint();

               /** 指定XML编码 */

               format.setEncoding("GBK");

               writer= new XMLWriter(new FileWriter(new File(filename)),format);

               writer.write(document);

               writer.close();

               /** 执行成功,需返回1 */

               returnValue = 1;

           }catch(Exception ex){

               ex.printStackTrace();

           }

           return returnValue;

        }



    public static void main(String[] args) {

       Dom4jDemo temp = new Dom4jDemo();
       temp.createXMLFile("e://myxml.xml");
       //temp.formatXMLFile("e://myxml.xml");
       //temp.ModiXMLFile("e://myxml.xml", "e://myxml2.xml");

       //System.out.println(temp.createXMLFile("d://testxml.xml"));
      
       //System.out.println(temp.ModiXMLFile("d://testxml.xml","d://testxml2.xml"));
//       try{
         //System.out.println(temp.formatXMLFile("d://testxml2.xml"));
//        // System.out.println(temp.formatXMLFile("E:\\test.xml"));
//       }
//       catch(Exception e)
//       {
//        // e.printStackTrace();
//        System.out.print("error!");
//
//    }

    }
}

2
1
分享到:
评论

相关推荐

    java创建与解析xml的例子

    在Java中,处理XML文件是常见的任务,包括创建XML文档和解析XML内容。这个压缩包提供了一个Web工程,其中包含了XML的创建与解析的示例代码,适合在Eclipse环境下运行。 创建XML文档通常涉及以下几个步骤: 1. **...

    java 解析xml 多级

    此外,JAXB(Java Architecture for XML Binding)是另一种强大的工具,它可以将XML与Java对象直接映射,方便数据的序列化和反序列化。对于多级XML,JAXB提供了一种更加面向对象的方式来处理数据,但需要额外的配置...

    JAVA调用webservice并解析xml

    总结,调用Java中的Web服务并解析XML涉及到了Web服务的基础概念、Java的Web服务客户端创建、XML解析技术以及实际的调用与响应处理。熟练掌握这些知识点,能够帮助开发者有效地集成和利用各种Web服务资源。

    java_dom解析xml xml java

    标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...

    Java中如何解析XML文件

    Java中如何解析XML文件,创建xml文件,增、删、改、查 xml节点信息

    java解析xml字符串

    ### Java解析XML字符串 在给定的代码示例中,我们看到了如何使用JDOM库来解析一个XML字符串,并对其进行操作。下面我们将详细解析这个过程: 1. **初始化XML源**:首先,将XML字符串转化为`StringReader`对象,这...

    java使用dom解析xml

    在 Java 中,DOM 解析允许开发者将整个 XML 文件加载到内存中,形成一个树形结构,然后通过这个结构来访问和操作 XML 的各个部分。 首先,我们需要引入 Java 的核心解析库,即 javax.xml.parsers 命名空间。这个库...

    java遍历文件夹解析XML.doc

    在Java编程中,遍历文件夹和解析XML是两种常见的操作,它们在处理数据和构建应用程序时发挥着关键作用。这篇文档"java遍历文件夹解析XML.doc"可能详细介绍了如何使用Java进行这两个任务。 首先,让我们深入了解一下...

    JAVA JAXB 解析XML嵌套子节点为字符串

    使用JAXB解析XML时,我们首先需要创建一个Java类模型,这个模型反映了XML文档的结构。每个XML元素对应一个Java类,类的属性对应元素的属性或子元素。例如,如果XML中有以下结构: ```xml &lt;text&gt;Some text here ...

    java代码pdf解析成xml.rar

    Java代码PDF解析成XML是一项技术任务,涉及到Java编程语言、PDF文档处理和XML数据格式转换。在这个场景中,我们主要关注如何使用Java库iTextPDF将PDF文档中的内容解析为XML结构。 首先,我们需要理解PDF(Portable ...

    java jdom解析xml

    Java JDOM解析XML是Java开发中处理XML文档的一种方法,JDOM全称为Java Document Object Model,它是一个基于Java语言的API,用于创建、修改和读取XML文档。JDOM为XML处理提供了一种高效且方便的解决方案,尤其适用于...

    java解析XML文件

    总结,Java使用DOM4J库解析XML文件涉及到读取文件、获取根元素、遍历元素和属性、提取文本内容、创建和修改XML以及保存XML。DOM4J因其易用性和强大的功能,成为Java开发者处理XML的首选工具之一。在实际项目中,根据...

    java在线解析xml

    Java在线解析XML是一种常见的编程任务,特别是在处理Web服务、数据交换或者从XML文件中提取信息时。XML(Extensible Markup Language)是一种结构化数据格式,它允许数据以自定义的标签进行组织,使得数据的传输和...

    java利用jdom解析xml文件

    Java中的JDOM库是用于解析XML文档的一种强大的工具。它提供了简单、高效的API来读取、修改和创建XML文件。本篇文章将深入探讨如何利用JDOM解析XML文件,以及在这个过程中涉及的关键知识点。 首先,我们需要了解XML...

    使用java解析XML文件,解析完之后将解析结果导入mysql数据库中

    在Java编程环境中,解析XML文件是一项常见的任务,特别是在数据处理和集成中。XML(Extensible Markup Language)是一种结构化数据格式,广泛用于存储和传输数据。本教程将介绍如何使用Java解析XML文件,并将解析...

    java解析xml动态生成树形菜单结构

    在Java中,我们可以使用`javax.xml.parsers.DocumentBuilderFactory`和`javax.xml.parsers.DocumentBuilder`来创建并解析XML文档。例如: ```java DocumentBuilderFactory factory = DocumentBuilderFactory.new...

    java解析xml例子

    SAX(Simple API for XML)解析器与DOM不同,它以事件驱动的方式解析XML文档,不会一次性加载整个文档。这使得SAX在处理大型XML文件时更为高效。以下是一个简单的SAX解析示例: ```java import javax.xml.parsers....

    Java解析XML工具类--(java源码)

    * 本类是专门解析XML文件的,主要用于为系统读取自己的配置文件时提供最方便的解析操作 * @author HX * */ public class XmlManager { /** * 得到某节点下某个属性的值 * @param element 要获取属性的...

    Java SAX解析Xml文档Demo

    本示例将详细解释如何在Java中使用SAX解析XML文档,并通过注释进行详细说明。 首先,我们需要引入SAX解析器的依赖库,通常这可以通过在项目构建配置中添加JAXB或Xerces实现来实现。 ```java // 引入必要的库,如...

Global site tag (gtag.js) - Google Analytics