`

readXML&writeXML(dom4j)

阅读更多

      利用dom4j读写XML文件.如果想利用dom4j读写XML文件的话,那么必须得下载或导入dom4j的jar文件.如果找不到下载地址可以在我的附件中下载.

 

 

1.读XML文件例子:ReadXMLDemo.java

package day1;

import java.io.*;
import java.util.*;

import org.dom4j.*;
import org.dom4j.io.*;

public class ReadXMLDemo {

  /**
   * @param args
   */
  public static void main(String[] args) {
    ReadXMLDemo demo = new ReadXMLDemo();
    demo.readXml("src/book.xml");
  }
  public void readXml(String fileName){
    SAXReader reader = new SAXReader();//构造解析器
    try {
      //解析XML文件为Document对象
      Document doc = reader.read(new File(fileName));
      //由Document获得Root元素
      Element root = doc.getRootElement();
      List list = root.elements("武侠小说");
      for(Iterator it = list.iterator();it.hasNext();){
        Element novel = (Element)it.next();
        String name = novel.elementText("书名");
        System.out.println(name);
        List author = novel.elements("作者");
        for(Iterator itau = author.iterator(); itau.hasNext();){
          Element auth = (Element)itau.next();
          System.out.println(auth.getData());
        }   
        String price = novel.elementText("价格");
        System.out.println(price);
        String brief = novel.elementText("简介");
        System.out.println(brief);
        System.out.println("------------------------");
        
      }
      Iterator its = root.elementIterator("言情小说");
      while(its.hasNext()){
        Element element = (Element)its.next();
        System.out.println(element.elementText("书名"));
      }
    } catch (DocumentException e) {  
      e.printStackTrace();
    }
  }

}

book.xml文件如下:

<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE 书籍列表 SYSTEM "book.dtd">
<书籍列表>
  <武侠小说 id="101" hot="true" 
            language="en">
    <书名>&lt;&lt;笑傲江湖&gt;&gt;</书名>
    <作者>金庸</作者> 
    <作者>刘苍松</作者>   
    <价格>$50</价格>   
    <电话>12345678</电话> 
    <简介>一本好书
      <![CDATA[<<笑傲江湖>>&lt;<b>内容</b>
         不做任何翻译的一段文字块]]>
      <![CDATA[ ]]>
      <!-- 这是一段注释 -->
    </简介>
  </武侠小说>
  <武侠小说 id="102">
    <书名>流行蝴蝶剑</书名>
    <作者>古龙</作者>
    <价格>$45</价格>
    <邮箱>gulong@sina.com</邮箱>
    <简介>也是一本好书</简介>
  </武侠小说>
  <言情小说 id="103">
    <书名>鬼吹灯</书名>
    <作者>暴龙</作者>
    <价格>$60</价格>
    <简介>好看的书</简介>
  </言情小说>
  <言情小说 id="104">
    <书名>还珠格格</书名>
    <作者>琼瑶</作者>
    <价格>$5</价格>
    <简介>很不好看的书</简介>
  </言情小说>
</书籍列表>

2.写入XML文件例子:WriteXmlDemo.java

package day1;

import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;

public class WriteXmlDemo {

  /**
   * @param args
   */
  public static void main(String[] args) {
    String[] courses = {"骑马","射箭","烹饪"};
    String[] students = {"张三丰","郭靖","花木兰","任我行"};
    
    WriteXmlDemo demo = new WriteXmlDemo();
    demo.writeXml("src/students.xml", courses, students);
  }
  /**
   * 写xml文件
   * @param fileName 目标文件名
   * @param courses 课程列表
   * @param students 学生列表
   */
  public void writeXml(String fileName, String[] courses,
      String [] students){
    //生成空的Document
    Document doc = DocumentHelper.createDocument();
    //生成根元素Record
    Element root = doc.addElement("Record");
    //给根元素增加两个子元素:Head / Body
    Element headElmt = root.addElement("Head");
    Element bodyElmt = root.addElement("Body");
    //给Head元素增加两个子元素:Code / Exam
    headElmt.addElement("Code").setText("SD1106");
    headElmt.addElement("Exam").setText("是");
    
    buildBody(bodyElmt, courses, students);
    
    out(fileName, doc);
  }
  /**
   * 构造Body元素及其子元素
   * @param bodyElmt Body元素
   * @param courses 课程列表
   * @param students 学生列表
   */
  private void buildBody(Element bodyElmt, String[] courses, String[] students) {
    //有多少门课程就有多少个CourseList
    //CourseList有两个子元素: CourseCode和Student
    for(String course : courses){
      Element courseListElmt 
        = bodyElmt.addElement("CourseList");
      Element courseCodeElmt 
        = courseListElmt.addElement("CourseCode");
      courseCodeElmt.setText(course);
      Element studentElmt
        = courseListElmt.addElement("Student");
      //每门课程都增加学生子元素,包括学生名字和成绩
      //假设每个学生都选修了每门课程
      buildStudent(studentElmt, students);
    }
    
  }
  /**
   * 构造学生子元素,包括学生名字和成绩
   * @param studentElmt 学生元素
   * @param students 学生列表
   */
  private void buildStudent(Element studentElmt, String[] students) {
    for(String student : students){
      Element studentNameElmt 
        = studentElmt.addElement("StudentName");
      studentNameElmt.setText(student);
      studentNameElmt.addAttribute("Score",
          new Random().nextInt(100) + "");
    }
    
  }
  /**
   * 将程序中构造的xml Document输出为操作系统文件.
   * @param fileName 输出的文件名
   * @param doc 程序中构造的Xml文档
   */
  private void out(String fileName, Document doc) {
    try {
      //输出流
      FileWriter writer = new FileWriter(fileName);
      
      //输出格式
      OutputFormat format 
        = OutputFormat.createPrettyPrint();
      format.setEncoding("gb2312");
      
      //xml文件输出对象,需要两个参数:输出流 / 输出格式
      XMLWriter xmlWriter = new XMLWriter(writer,format);
      //将doc文档写出
      xmlWriter.write(doc);
      //关闭
      xmlWriter.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

students.xml文件如下:

<?xml version="1.0" encoding="gb2312"?>

<Record>
  <Head>
    <Code>SD1106</Code>
    <Exam>是</Exam>
  </Head>
  <Body>
    <CourseList>
      <CourseCode>骑马</CourseCode>
      <Student>
        <StudentName Score="81">张三丰</StudentName>
        <StudentName Score="75">郭靖</StudentName>
        <StudentName Score="65">花木兰</StudentName>
        <StudentName Score="2">任我行</StudentName>
      </Student>
    </CourseList>
    <CourseList>
      <CourseCode>射箭</CourseCode>
      <Student>
        <StudentName Score="50">张三丰</StudentName>
        <StudentName Score="49">郭靖</StudentName>
        <StudentName Score="27">花木兰</StudentName>
        <StudentName Score="8">任我行</StudentName>
      </Student>
    </CourseList>
    <CourseList>
      <CourseCode>烹饪</CourseCode>
      <Student>
        <StudentName Score="31">张三丰</StudentName>
        <StudentName Score="75">郭靖</StudentName>
        <StudentName Score="38">花木兰</StudentName>
        <StudentName Score="11">任我行</StudentName>
      </Student>
    </CourseList>
  </Body>
</Record>

 

0
9
分享到:
评论

相关推荐

    dom4j关于xml读写的例子里面还有dom4j的jar包

    1. `readXML()`: 使用DOM4J读取XML文件,将XML内容加载到内存中的`Document`对象。 2. `writeXML()`: 将内存中的`Document`对象写回XML文件,更新或创建新的XML文件。 3. `modifyXML()`: 修改XML文件中的特定节点,...

    dom4j操作xml实例

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。本实例将详细解释如何使用DOM4J进行XML文档的操作,包括读取、写入、更新和删除XML元素。 ...

    ADO.NET2.0 XML操作

    在视频教程"ADO.NET2.0 XML操作"中,可能会详细讲解如何使用XMLDataDocument进行数据同步,如何利用DataTable的ReadXml和WriteXml方法进行XML数据的读写,以及如何使用XmlSchemaSet进行XML模式验证。还会涉及XPath...

    xml生成解析

    在提供的代码片段中,`ReadXml` 类中的 `readXml` 方法演示了如何使用 dom4j 解析 XML 字符串。 1. 创建 `InputSource` 对象,设置其编码为 "UTF-8",以确保正确处理中文字符,避免乱码问题。 2. 使用 `SAXReader` ...

    java写XML文件和读取XML文件

    4. DOM4J:一个Java的XML API,提供了丰富的功能和简单易用的API。 5. JDOM:为Java设计的DOM实现,提供了更快的性能和更简洁的API。 总的来说,Java提供了多种方式来处理XML文件,可以根据实际需求选择合适的API或...

    java_and_XML.rar_java xml

    在这个"java_and_XML.rar_java xml"压缩包中,我们有两个文件:WriteXml.java和ReadXml.java,它们分别展示了如何使用Java来读取和写入XML文件。 首先,让我们深入了解Java处理XML的基础知识。在Java中,有几种不同...

    java实现Xml文件读写

    在实际项目中,为了更方便地操作XML文件,可以使用开源库如JDOM、DOM4J或Java的StaX API。这些库提供了更高级别的API,使得XML操作更为简洁和高效。 本项目中的"ReadAndWriteXml"可能包含了以上所述的读写操作的...

    qt读写xml.zip

    例如,可以创建一个名为`readXML`的静态函数,它打开指定的XML文件并返回其对应的`QDomDocument`对象: ```cpp QDomDocument readXML(const QString &fileName) { QDomDocument doc; if (!doc.load(fileName)) { ...

    asp.net 高效的数据源文件XML的应用

    使用`DataSet.ReadXml()`方法,我们可以从XML文件加载数据到DataSet;相反,使用`DataSet.WriteXml()`方法,可以将DataSet中的数据写入XML文件。这种灵活性使得XML成为ASP.NET应用中临时或持久存储数据的有效选择。 ...

    全局类形式集成XML读取保存功能。

    例如,可以创建一个名为`XmlHelper`的全局类,包含`readXml`和`writeXml`静态方法。 4. XML读取: - DOM方式:使用`javax.xml.parsers.DocumentBuilderFactory`和`DocumentBuilder`创建解析器,解析XML文件,得到`...

    Android解析XML文件的三方法

    `writeXML()`方法则负责将`List&lt;Person&gt;`写入XML文件。 总结来说,Android中解析XML文件有三种主要方法,每种都有其适用场景。SAX解析适合处理大文件,节省内存;DOM解析操作便利,但内存消耗大;Pull解析则提供了...

    java_java写XML文件和读取XML文件

    public class ReadXML { public static void main(String argv[]) { try { DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory....

    Qt实现的xml读写demo 递归

    doc.save(&file, 4)) { // 4是缩进空格数,可以调整 qDebug() ; file.close(); return false; } file.close(); return true; } ``` 在实际应用中,你可以在`traverseXml()`函数中根据需要对每个元素节点进行...

    struts中实现对XML读写操作

    public class ReadXML { public static void main(String[] args) { try { File inputFile = new File("path_to_xml_file"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); ...

    Asp.net C# XML文件中数据的增删改查

    1. **读取XML数据**:使用XmlDocument类加载XML文件,然后遍历DOM树来获取数据。 ```csharp XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("path_to_xml_file.xml"); XmlNodeList nodes = xmlDoc....

    xml基本操作

    public void readXML(String path) { File file = new File(path); // 构建文档对象工厂 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { // 构建文档对象 DocumentBuilder db =...

    java 操作xml

    类似地,你可以创建一个`WriteXML`类,用于创建一个新的XML文件或修改已有的XML文件。 通过这个示例,你可以了解到如何在Java中进行XML文件的基本读写操作。这个压缩包提供的源码应该包含了这些功能,只需根据自己...

    Java_XML生成与解析的四种方法

    ### Java中XML生成与解析的四种方法 #### 一、概述 XML(可扩展标记语言)作为一种跨平台、跨语言的数据交换格式,在数据集成与交互领域具有重要作用。它以其平台无关性、语言无关性和系统无关性的特点,在软件开发...

    一次代码重构之旅-快速读写xml文件工具类封装

    可能包含如`readXML(String filePath, Class&lt;T&gt; clazz)`和`writeXML(String filePath, T object)`这样的方法,用于将对象序列化为XML和反序列化为对象。 4. **对象与XML的映射**:在反序列化过程中,需要将XML元素...

    VC读写XML文件的方法

    4. 右键点击每个按钮,选择"Properties",在属性窗口中设置按钮的ID(例如IDC_READXML和IDC_WRITEXML)和文字(例如“读取XML”和“写入XML”)。 接下来,我们要为这两个按钮添加消息处理函数。在类视图(Class ...

Global site tag (gtag.js) - Google Analytics