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

使用DOM4J来操作的XML文件(Tools)

 
阅读更多

   使用DOM4J来操作的XML文件。

   我们需要引入的包:

//文件包 
import java.io.ByteArrayOutputStream; 
import java.io.File; 
import java.io.FileWriter; 
//工具包 
import java.util.Iterator; 
import java.util.List; 
//dom4j包 
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; 

 

/** 
    * doc2String 
    * 将xml文档内容转为String 
    * @return 字符串 
    * @param document 
    */ 
   public static String doc2String(Document document) 
   { 
      String s = ""; 
      try 
      { 
           //使用输出流来进行转化 
           ByteArrayOutputStream out = new ByteArrayOutputStream(); 
           //使用GB2312编码 
           OutputFormat format = new OutputFormat("  ", true, "GB2312"); 
           XMLWriter writer = new XMLWriter(out, format); 
           writer.write(document); 
           s = out.toString("GB2312"); 
      }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 doc = null; 
      try 
      { 
           doc = DocumentHelper.parseText(s); 
      }catch(Exception ex) 
      {             
           ex.printStackTrace(); 
      } 
      return doc; 
   } 

 

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中的内容写入文件中 */ 
            //默认为UTF-8格式,指定为"GB2312" 
            OutputFormat format = OutputFormat.createPrettyPrint(); 
            format.setEncoding("GB2312"); 
            XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)),format); 
            writer.write(document); 
            writer.close();             
        }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; 
      try 
      { 
         Document doc =  DocumentHelper.parseText(str);        
         flag = doc2XmlFile(doc,filename); 
      }catch (Exception ex) 
      { 
         flag = false; 
         ex.printStackTrace(); 
      } 
      return flag; 
   } 

 

5、载入一个xml文档

/** 
    * load 
    * 载入一个xml文档 
    * @return 成功返回Document对象,失败返回null 
    * @param uri 文件路径 
    */ 
   public static Document load(String filename) 
   { 
      Document document = null; 
      try  
      {  
          SAXReader saxReader = new SAXReader(); 
          document = saxReader.read(new File(filename)); 
      } 
      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 = "<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>\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对象 */ 
        Document document = DocumentHelper.createDocument(); 
        /** 建立config根节点 */ 
        Element configElement = document.addElement("config"); 
        /** 建立ftp节点 */ 
        configElement.addComment("东电ftp配置"); 
        Element ftpElement = configElement.addElement("ftp"); 
        ftpElement.addAttribute("name","DongDian"); 
        /** ftp 属性配置 */ 
        Element hostElement = ftpElement.addElement("ftp-host"); 
        hostElement.setText("127.0.0.1"); 
        (ftpElement.addElement("ftp-port")).setText("21"); 
        (ftpElement.addElement("ftp-user")).setText("cxl"); 
        (ftpElement.addElement("ftp-pwd")).setText("longshine"); 
        ftpElement.addComment("ftp最多尝试连接次数"); 
        (ftpElement.addElement("ftp-try")).setText("50"); 
        ftpElement.addComment("ftp尝试连接延迟时间"); 
        (ftpElement.addElement("ftp-delay")).setText("10");     
        /** 保存Document */ 
        doc2XmlFile(document,"classes/xmlWriteDemoByDocument.xml"); 
   } 

 

8、演示读取文件的具体某个节点的值

/** 
    *  演示读取文件的具体某个节点的值  
    */ 
   public static void xmlReadDemo() 
   { 
      Document doc = load("classes/xmlWriteDemoByDocument.xml"); 
      //Element root = doc.getRootElement(); 
      /** 先用xpath查找所有ftp节点 并输出它的name属性值*/ 
      List list = doc.selectNodes("/config/ftp" ); 
      Iterator it = list.iterator(); 
      while(it.hasNext()) 
      {    
          Element ftpElement = (Element)it.next(); 
          System.out.println("ftp_name="+ftpElement.attribute("name").getValue()); 
      } 
      /** 直接用属性path取得name值 */ 
      list = doc.selectNodes("/config/ftp/@name" ); 
      it = list.iterator(); 
      while(it.hasNext()) 
      {    
          Attribute attribute = (Attribute)it.next(); 
          System.out.println("@name="+attribute.getValue()); 
      } 
      /** 直接取得DongDian ftp的 ftp-host 的值 */ 
      list = doc.selectNodes("/config/ftp/ftp-host" ); 
      it = list.iterator(); 
      Element hostElement=(Element)it.next(); 
      System.out.println("DongDian's ftp_host="+hostElement.getText()); 
   } 

 

9、修改或删除某个值或属性

/** ftp节点删除ftp-host节点 */ 
ftpElement.remove(hostElement);  
/** ftp节点删除name属性 */ 
ftpElement.remove(nameAttribute); 
/** 修改ftp-host的值 */ 
hostElement.setText("192.168.0.1");  
/** 修改ftp节点name属性的值 */ 
nameAttribute.setValue("ChiFeng"); 

 

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

分享到:
评论

相关推荐

    dom4j api 参考手册

    为了方便网友编程,将资源...org.dom4j.xpath Provides the core tools needed to use the XPath library org.dom4j.xpp Provides implementation classes to cleanly integrate dom4j with the XML Pull Parser XPP

    基于matlab的xml操作

    在MATLAB中操作XML文件时,需要首先使用xmlread函数将XML文件读取到DOM节点,然后使用DOM节点提供的方法来操作XML文档,最后使用xmlwrite函数将DOM节点写入到XML文件中。 MATLAB提供了方便的函数来操作XML文件,...

    delphi 操作xml文件

    本示例将探讨如何使用Delphi来操作XML文件,为初学者提供实践指导。 首先,了解XML的基本结构是必要的。XML文档由元素(Element)、属性(Attribute)、文本内容(Text Content)等构成,每个XML文件都有一个根元素...

    XmlTools_2.4.9.2 x64_Unicode.zip

    标题中的"XmlTools_2.4.9.2 x64_Unicode.zip"指的是XML Tools插件的一个特定版本,版本号为2.4.9.2,适用于64位操作系统,并且是Unicode编码的。XML Tools是一款强大的XML编辑和处理工具,它专为提升在Notepad++中的...

    直接读写XML文件

    4. DOM(Document Object Model):是一种将XML文档映射为树形结构的API,允许程序员通过节点操作来访问和修改XML内容。例如,通过DOM可以获取元素、属性和文本,也可以添加、删除或修改这些元素。 5. SAX(Simple ...

    java基于dom4j包实现对XML解析的方法

    创建一个Java类,如`Xmlreadtest`,并使用DOM4J的SAXReader类来读取XML文件并获取其内容: ```java package xmlreadtest; import java.io.File; import org.dom4j.DocumentException; import org.dom4j....

    xml文件以树形结构显示

    1. 使用XML解析库(如Java的JAXB, DOM4J, Python的lxml等)解析XML文件,生成DOM树。 2. 遍历DOM树,为每个元素创建树形控件的节点,属性值可以作为子节点或单独的文本框。 3. 将树形控件添加到用户界面,允许用户...

    XML tools指南

    例如,"XML指南.chm"可能是一个包含详细XML教程和参考信息的离线帮助文件,用户可以通过它学习XML语法、DOM(Document Object Model)和SAX(Simple API for XML)解析方法等。 安装必看.txt和飞翔下载说明.txt可能...

    xml_io_tools_2010_11_05.rar

    总的来说,`xml_io_tools_2010_11_05`是MATLAB用户处理XML文件的一个强大辅助工具,它的存在极大地扩展了MATLAB在XML数据操作方面的功能,使得开发者能够更加专注于核心的计算任务,而不必担心数据的输入和输出问题...

    Xerces-J-tools.2.9.0

    在"tools"这个压缩包子文件中,可能包含了一系列与Xerces-J相关的实用工具,例如XML Schema编译器、XML验证器、DOM打印工具等,这些工具可以帮助开发者测试XML文档、验证XML Schema或者进行其他XML相关的任务。...

    Eclipse编写的Android下拉应用实例(数据源是xml文件)

    5. **Android XML布局**: 在Android应用开发中,UI界面通常是用XML文件来定义的。开发者可以通过XML文件来描述控件的布局、属性和事件处理。 6. **ListView**: ListView是Android中用于显示大量数据的视图组件,它...

    Xerces-J-tools.2.5.0.zip

    总的来说,Xerces-J-tools.2.5.0.zip是Java开发者处理XML文档的重要工具集,尤其在处理大型XML数据或集成到如Hibernate这样的框架时,其SAX解析器的优势尤为明显。通过这个压缩包,开发者可以更高效地进行XML解析,...

    Xerces-J-tools.1.2.2.zip

    总结来说,Xerces-J-tools.1.2.2.zip包含的Xerces-J是一个强大且灵活的XML解析库,尤其适用于Java环境。通过其SAX解析器,开发者可以高效地处理大型XML文件,同时,Xerces-J提供的多种功能如验证、命名空间支持等,...

    解析xml文件文档+实例+配置

    1. Java中的解析:使用JAXB(Java Architecture for XML Binding)进行对象与XML之间的映射,或者使用DOM、SAX API进行解析。 2. Python中的解析:利用ElementTree库,既支持DOM方式也支持SAX方式。 3. JavaScript中...

    Xerces-J-tools.1.3.0.zip

    总结来说,Xerces-J-tools.1.3.0.zip是一个包含早期Xerces-J版本的压缩包,其核心是SAX解析器,适用于需要高效处理XML的Java项目。无论是在大型XML数据处理、XML Schema验证,还是与其他Java框架如Hibernate的集成,...

    Xerces-J-tools.2.4.0.zip

    Xerces-J-tools.2.4.0.zip是一个包含Xerces库早期版本的压缩包,其中的工具对于理解和操作XML文档至关重要。Xerces是一个开源的XML解析器,由Apache软件基金会开发,它支持Java(Xerces-J)和C++(Xerces-C++)等...

    Xerces-J-tools.1.2.3.zip

    2. **DOM(Document Object Model)解析器**:DOM是一种将XML文档表示为树形结构的API,允许开发者通过节点操作来访问和修改XML文档。Xerces-J也提供了对DOM Level 2和Level 3的支持。 3. **XML Schema解析器**:...

    java生成xsd,xml示例

    使用Unmarshaller可以将XML数据解析为Java对象,而使用工具如JAXB或XML Schema Tools则可以生成XSD文件。 在提供的压缩包文件`xml_test`中,可能包含了用于演示如何生成XML和XSD的Java代码和样例文件。通过阅读和...

    Xerces-J-tools.1.2.1.zip

    《Xerces-J-tools.1.2.1.zip——深入理解SAX XML解析器》 在信息化时代,XML(eXtensible Markup Language)作为数据交换和存储的标准格式,广泛应用于各种软件系统中。XML文档的解析是处理XML数据的关键步骤,其中...

    Xerces-J-tools.2.3.0.zip

    除了SAX解析器,Xerces-J还支持DOM解析器,它将整个XML文档加载到内存中形成一个树形结构,方便遍历和操作。然而,对于大型XML文件,DOM解析器可能会消耗大量内存,因此在资源有限的环境中通常首选SAX。 此外,...

Global site tag (gtag.js) - Google Analytics