`
heioo
  • 浏览: 75100 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 操作xml

    博客分类:
  • java
阅读更多
java操作XML文件 dom 篇 博客分类: xml
XMLJavaOS.import java.io.*;
import javax.xml.transform.*;   
import javax.xml.transform.dom.DOMSource;   
import javax.xml.transform.stream.StreamResult;       
import javax.xml.parsers.*;   
import org.w3c.dom.*;
import org.xml.sax.InputSource;



1、将XML文件的内容转化为String

   /**
     * doc2String
     * 将xml文档内容转为String
     * @return 字符串
     * @param document
     */
   public static String doc2String(Document document)
    {
      String s = "";
      try
       {
           TransformerFactory tFactory = TransformerFactory.newInstance();   
           Transformer transformer = tFactory.newTransformer();
          /** 使用GB2312编码 */
          //transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
           Source source = new DOMSource( document );            
          /** 直接输出到控制台 */
          //Result output = new StreamResult( System.out );         
           StringWriter out = new StringWriter(); 
           Result output = new StreamResult( out );
           transformer.transform( source, output );
           out.flush();
           s = out.toString();
       }catch(Exception ex)
       {            
           ex.printStackTrace();
       }      
      return s;
    }

2、将符合XML格式的String 转化为XML Document

   /**
     * string2Document
     * 将字符串转为Document
     * @return 
     * @param s xml格式的字符串
     */
   public static Document string2Document(String s)
    {
       Document document = null;
      try
       {
           DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
           document = parser.parse( new InputSource(new StringReader(s)) );
       }catch(Exception ex)
       {            
            ex.printStackTrace();
       }
      return document;
    }3、将Document对象保存为一个xml文件到本地

   /**
     * doc2XmlFile
     * 将Document对象保存为一个xml文件到本地
     * @return true:保存成功   flase:失败
     * @param filename 保存的文件名
     * @param document 需要保存的document对象
     */
   public static boolean doc2XmlFile(Document document,String filename)
    {
      boolean flag = true;
      try
       {
            /** 将document中的内容写入文件中   */
             TransformerFactory tFactory = TransformerFactory.newInstance();   
             Transformer transformer = tFactory.newTransformer(); 
            /** 编码 */
            //transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
             DOMSource source = new DOMSource(document); 
             StreamResult result = new StreamResult(new File(filename));   
             transformer.transform(source, result); 
         }catch(Exception ex)
         {
             flag = false;
             ex.printStackTrace();
         }
        return flag;      
    }4、将xml格式的字符串保存为本地文件,如果字符串格式不符合xml规则,则返回失败

   /**
     * string2XmlFile
     * 将xml格式的字符串保存为本地文件,如果字符串格式不符合xml规则,则返回失败
     * @return true:保存成功   flase:失败
     * @param filename 保存的文件名
     * @param str 需要保存的字符串
     */
   public static boolean string2XmlFile(String str,String filename)
    {
      boolean flag = true;
      /* 以下格式生成的文件是以UTF-8为格式 */
      try
       {
          Document doc = string2Document(str);       
          flag = doc2XmlFile(doc,filename);
       }catch (Exception ex)
       {
          flag = false;
          ex.printStackTrace();
       }
      /** 以下不通过xml格式验证,象生成普通文件格式的方法生成xml文件
         OutputStream os = null;       
         try {
                 os = new FileOutputStream(filename);
                 os.write(str.getBytes());
                 os.flush();
         } catch (Exception ex) {
                 flag = false;
                 ex.printStackTrace();
         }finally
         {     
               try{ 
                 if (os!=null) os.close();
               }catch (Exception ex) {
                 ex.printStackTrace();
               }              
         }
          */
      return flag;
    }5、载入一个xml文档

   /**
     * load
     * 载入一个xml文档
     * @return 成功返回Document对象,失败返回null
     * @param uri 文件路径
     */
   public static Document load(String filename)
    {
       Document document = null;
      try 
       { 
            DocumentBuilderFactory   factory = DocumentBuilderFactory.newInstance();   
            DocumentBuilder builder=factory.newDocumentBuilder();   
            document=builder.parse(new File(filename));   
            document.normalize();
       }
      catch (Exception ex){
           ex.printStackTrace();
       }  
      return document;
    }6、演示String保存为xml文件

   /**
     * xmlWriteDemoByString
     * 演示String保存为xml文件
     */
   public void xmlWriteDemoByString()
    {
      String s = "";
      /** xml格式标题 "<?xml version='1.0' encoding='GB2312'?>" 可以不用写*/
       s = "<?xml version='1.0' encoding='GB2312'?>"
          +"<config>\r\n"
          +"    <ftp name='DongDian'>\r\n"
          +"      <ftp-host>127.0.0.1</ftp-host>\r\n"
          +"      <ftp-port>21</ftp-port>\r\n"
          +"      <ftp-user>cxl</ftp-user>\r\n"
          +"      <ftp-pwd>longshine</ftp-pwd>\r\n"
          +"      <!-- ftp最多尝试连接次数 -->\r\n"
          +"      <ftp-try>50</ftp-try>\r\n"
          +"      <!-- ftp尝试连接延迟时间 -->\r\n"
          +"      <ftp-delay>10</ftp-delay>\r\n"
          +"      <ftp-chn>中文</ftp-chn>\r\n"
          +"   </ftp>\r\n"
          +"</config>\r\n";
      //将文件生成到classes文件夹所在的目录里   
       string2XmlFile(s,"xmlWriteDemoByString.xml");   
      //将文件生成到classes文件夹里   
       string2XmlFile(s,"classes/xmlWriteDemoByString.xml");  
    }7、演示手动创建一个Document,并保存为XML文件

   /**
     * 演示手动创建一个Document,并保存为XML文件
     */
   public void xmlWriteDemoByDocument()
    {
        /** 建立document对象 */
        try 
         { 
            DocumentBuilderFactory   factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();

            Document document = builder.newDocument();
           /** 建立config根节点 */
            Element configElement = document.createElement("config");
            document.appendChild( configElement );
           /** 建立ftp节点 */
            Comment cmt = document.createComment("东电ftp配置");        
            configElement.appendChild(cmt);        
       
            Element ftpElement = document.createElement("ftp");
            configElement.appendChild(ftpElement);
            ftpElement.setAttribute("name","DongDian");
           /** ftp 属性配置 */
            Element element = document.createElement("ftp-host");
            element.appendChild(document.createTextNode( "127.0.0.1" ));
            ftpElement.appendChild(element);
           
            element = document.createElement("ftp-port");
            element.appendChild(document.createTextNode( "21" ));
            ftpElement.appendChild(element);
           
            element = document.createElement("ftp-user");
            element.appendChild(document.createTextNode( "cxl" ));
            ftpElement.appendChild(element);
           
            element = document.createElement("ftp-pwd");
            element.appendChild(document.createTextNode( "longshine" ));
            ftpElement.appendChild(element);
           
            element = document.createElement("ftp-try");
            element.appendChild(document.createTextNode( "50" ));
            ftpElement.appendChild(element);
           
            element = document.createElement("ftp-chn");
            element.appendChild(document.createTextNode( "中文" ));
            ftpElement.appendChild(element);
           
           /** 保存Document */
            doc2XmlFile(document,"classes/xmlWriteDemoByDocument.xml");
       }
      catch (Exception ex){
           ex.printStackTrace();
       }       
    }8、演示读取文件的具体某个节点的值

   /**
     *   演示读取文件的具体某个节点的值 
     */
   public static void xmlReadDemo()
    {
  String filePath=类名.class.getClassLoader().getResource("/").getFile();
  filePath=filePath.substring(1,56);
  filePath=filePath+"xml文件的名字"+".xml";
       Document document = load(filePath);
       Node root=document.getDocumentElement();
      /** 如果root有子元素 */
      if(root.hasChildNodes())
       {
         /** ftpnodes */
          NodeList ftpnodes = root.getChildNodes();
         /** 循环取得ftp所有节点 */
         for (int i=0;i<ftpnodes.getLength();i++)
          {
             NodeList ftplist = ftpnodes.item(i).getChildNodes();
            for (int k=0;k<ftplist.getLength();k++)
             {
               Node subnode = ftplist.item(k);
              if (subnode.getNodeType()==Node.ELEMENT_NODE)
               {
                /** 打印ftp所有节点属性的值 */
                 System.out.println(subnode.getNodeName()+":"+subnode.getFirstChild().getNodeValue());
               }
             }
          }
       }
    }9、演示修改文件的具体某个节点的值

   /**
     *   演示修改文件的具体某个节点的值 
     */
   public static void xmlUpdateDemo()
    {
       Document document = load("classes/xmlWriteDemoByDocument.xml");
       Node root=document.getDocumentElement();
      /** 如果root有子元素 */
      if(root.hasChildNodes())
       {
         /** ftpnodes */
          NodeList ftpnodes = root.getChildNodes();
         /** 循环取得ftp所有节点 */
         for (int i=0;i<ftpnodes.getLength();i++)
          {                      
             NodeList ftplist = ftpnodes.item(i).getChildNodes();
            for (int k=0;k<ftplist.getLength();k++)
             {
               Node subnode = ftplist.item(k);
              /** 删除ftp-chn节点 */
              if (subnode.getNodeType()==Node.ELEMENT_NODE&&subnode.getNodeName()=="ftp-chn")
               {
                  ftpnodes.item(i).removeChild(subnode);
               }
              /** 修改ftp-host的值为 192.168.0.1 */
              if (subnode.getNodeType()==Node.ELEMENT_NODE&&subnode.getNodeName()=="ftp-host")
               {                 
                  subnode.getFirstChild().setNodeValue("192.168.0.1");
               }
             }
            
          }
       }
      /** 修改完后重新保存 */
       doc2XmlFile(document,"classes/xmlWriteDemoByDocument.xml");
    }
//转载自:http://java-admin.iteye.com/blog/358348
分享到:
评论

相关推荐

    java读取XMl数据

    本文将深入探讨如何使用Java来读取XML数据。 首先,我们需要了解XML的基本结构。XML文档由元素(Element)、属性(Attribute)、文本内容(Text Content)等组成。每个XML文档都有一个根元素,其他元素则嵌套在根...

    java读取xml文件

    Java 读取 XML 文件是 Java 开发中常见的一项任务,XML(eXtensible Markup Language)作为一种可扩展标记语言,广泛用于数据交换、配置存储等领域。本教程将深入讲解如何在 Java 中处理 XML 文件,同时涉及 XML 的 ...

    用java读取xml文件的四种方法

    要读取XML文件,Java提供了多种方法。以下是四种常用的方法,每种都有其适用场景和特点: 1. **DOM解析器(Document Object Model)** DOM解析器将整个XML文件加载到内存中,创建一个树形结构,允许我们通过节点...

    使用Java读取XML配置文件

    使用 Java 读取 XML 配置文件 Java 语言和 XML 技术可以说是黄金组合,网上已经有很多文章介绍 XML 在电子商务中的数据交换的作用。但是在平时系统开发中,我们不一定都用到数据交换,是否无法使用 XML?当然不是...

    java 读取xml文件生成树形图

    在Java编程中,读取XML文件并将其转换为树形结构是一种常见的操作,尤其是在处理配置文件、数据交换或解析XML文档时。以下是一篇详细解释如何实现这一过程的文章。 首先,我们需要了解XML(eXtensible Markup ...

    Java读写xml,word,xml文件(防乱码)

    #### 三、Java读取XML文件 对于XML文件的读取,我们可以采用Java标准库中的`BufferedReader`配合`InputStreamReader`的方式来进行处理。这样可以在读取文件的同时指定正确的字符编码,从而避免乱码问题。 ```java ...

    java读取XML文件内容的四种方法[归类].pdf

    Java 读取 XML 文件内容的四种方法 Java 语言提供了多种方法来读取 XML 文件内容,以下是四种常见的方法: 1. DOM(Document Object Model) DOM 是一种基于树的模型,它将 XML 文档表示为一个层次结构的节点或...

    java读取XML(JDOM)

    Java读取XML文件是开发过程中常见的任务,JDOM是一个用于处理XML文档的Java库,它提供了方便、高效的方式来创建和操作XML数据。本篇将详细讲解如何使用JDOM来读取XML文件,以及相关的源码解析。 首先,我们需要了解...

    java读取XML内容源代码

    在Java编程中,读取XML(eXtensible Markup Language)文件内容是一项常见的任务,尤其在处理配置数据、数据交换或者存储结构化信息时。XML因其可读性强、结构清晰的特点,被广泛应用于各种场景。本篇文章将详细介绍...

    java读取xml文件生成文件

    在给定的场景中,我们主要关注如何使用Java来读取XML文件并根据需求生成新的文件。以下是关于这个主题的详细说明。 首先,Java中的`javax.xml.parsers`和`org.w3c.dom`包提供了处理XML的基本工具。`javax.xml....

    Java读取xml文件的四种方法.doc

    Java 读取 XML 文件的四种方法 在 Java 中读取 XML 文件有多种方法,本文将介绍四种常见的方法,分别使用 DOM、DOM4J、JDOM 和 SAX 解析器。 第一种方法:使用 DOM DOM(Document Object Model)是一种树形结构,...

    java读取xml用到的jar包集合

    在“java读取XML用到的jar包集合”中,包含了9个关键的JAR文件,它们提供了处理XML所需的API和功能。以下是这些JAR文件可能包含的重要知识点: 1. **JAXB (Java Architecture for XML Binding)** JAXB是Java标准版...

    java写XML文件和读取XML文件

    在Java编程中,处理XML文件是常见的需求,包括创建XML文件、读取XML文件以及解析XML内容。下面将详细介绍Java如何进行XML文件的操作。 一、Java写XML文件 1. 使用DOM(Document Object Model)API: DOM是W3C推荐...

    java操作xml工具包

    Java操作XML工具包是开发过程中不可或缺的部分,尤其是在处理与数据交换、配置文件或者与服务器通信相关的任务时。这里提到的两个关键库——XStream和DOM4J,都是Java中广泛使用的XML处理工具。 XStream是一个Java...

    java 操作xml文件(包含xml文件和对应jar包)

    在实际应用中,我们可能需要读取XML文件中的数据,例如,使用DOM API的`DocumentBuilderFactory`和`DocumentBuilder`来创建`Document`对象,然后通过`getElementsByTagName`、`getElementsByTagnameNS`等方法查找...

    java解析xml字符串

    Java提供了多种库来解析和操作XML文档,其中JDOM(Java Document Object Model)是一个广泛使用的开源库,它提供了简单且强大的API来读取、创建和修改XML文档。 ### Java解析XML字符串 在给定的代码示例中,我们...

    Java读取xml文件中oracle数据库连接

    在Java编程中,读取XML文件并从中获取Oracle数据库连接是一项常见的任务,特别是在需要动态配置数据库连接信息的应用中。XML文件通常被用作配置文件,因为它具有良好的结构和可读性,适合存储像数据库连接这样的配置...

    SAX.java 操作xml文件

    SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件

    Xml.zip_JAVA读取xml_XML读取_java_saxreader

    本教程将重点介绍如何使用SAXReader在Java中读取XML文件。 SAXReader是JDOM库中的一个类,它实现了SAX解析器接口,适用于处理大型XML文档,因为它不会将整个XML文档加载到内存中,而是采用事件驱动的方式,逐个处理...

    java读取xml文件并存入数据库

    java从xml中读入数据并存入到sqlserver2005数据库中

Global site tag (gtag.js) - Google Analytics