Java Xml 简明教程

Java DOM4J Parser - Create XML Document

Java DOM4J 库具有创建 XML 文档的类、接口和方法。org.dom4j 包的 Document 和 Element 接口具有创建 XML 文档的方法。org.dom4j.io 包的 XMLWriter 类将文档的 XML 内容写入文件。在本章中,我们将使用这些接口和类创建 XML 文件。

Create XML Using Java DOM4J Parser

以下是使用 Java DOM4J 解析器创建 XML 文档的步骤 −

  1. 步骤 1: 创建新文档

  2. 步骤 2: 创建和添加 XML 元素

  3. 步骤 3: 创建 FileOutputStream

  4. 步骤 4: 将 XML 文档写入文件

  5. 步骤 5: 打印 XML 文档

Step 1: Creating a new Document

org.dom4j 包中的 DocumentHelper 类提供了使用 DOM4J 的帮助器方法。createDocument() 方法如下创建新文档:

Document document = DocumentHelper.createDocument();

Step 2: Creating and Adding XML elements

我们可以使用 addElement() 方法创建根元素并将其添加到 XML 文档。此外,我们可以使用同一个 addElement() 方法将子元素添加到根元素。要添加属性,我们使用 addAttribute() 方法。

Element root = document.addElement( "root_ele_name" );
Element child = root.addElement("child_ele_name").addAttribute("attr_name", "attr_val");

Step 3: Creating a FileOutputStream

要将 XML 文档的内容复制到文件中,我们需要如下创建一个 FileOutputStream:

FileOutputStream newFile = new FileOutputStream("D://newDOM4jFile.xml");

Step 4: Writing the XML document into file

XMLWriter 类具有 write() 方法,用于将 XML 文档写入指定文件。我们还可以将我们想要添加到内容中的格式作为第二个参数发送给 write() 方法。

XMLWriter writer = new XMLWriter(newFile);
writer.write( document );

Step 5: Printing the XML document

要打印 XML 文档的内容,我们可以将 System.out 作为第一个参数传递,并将其格式作为第二个参数传递。createPrettyPrint() 方法在显示时创建正确的 XML 元素缩进。此步骤是可选的,可用于测试目的。

OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter consoleWriter = new XMLWriter( System.out, format );
consoleWriter.write( document );

Creating XML file

addElement() 方法可与 Document 或 Element 接口配合使用。此方法将元素的名称作为参数,并将其添加到指定的文档或元素中。要添加根元素,我们使用 Document.addElement(root_ele_name)。

addAttribute() 方法将属性名称作为第一个参数,将值作为第二个参数。它将属性添加到指定的元素。

addText() 方法向元素添加文本内容。它将文本内容作为 String,并添加到相应的元素。

Example

使用上面讨论的方法,我们将创建一个 XML 文件,其根元素为“cars”,公司为其属性。让我们添加两个“carname”元素,其中“type”作为属性。

我们需要创建一个以下 cars.xml 文件:

<?xml version = "1.0" encoding = "UTF-8"?>
<cars>
   <supercars company = "Ferrari">
      <carname type = "formula one">Ferrari 101</carname>
      <carname type = "sports">Ferrari 202</carname>
   </supercars>
</cars>

以下 CreateXMLDemo.java 程序创建了一个文档,并使用 addElement() 方法添加元素,使用 addAttribute() 方法添加属性。要设置文本内容,请使用 addText() 方法。文档的 XML 内容被传输到一个文件,并打印在控制台上。

package java_xml_dom4j;

import java.io.FileOutputStream;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class CreateDemo {
   public static void main(String[] args) {
      try {

    	 //Creating a new Document
         Document document = DocumentHelper.createDocument();

         //Creating and Adding XML elements
         Element root = document.addElement( "cars" );
         Element supercarElement = root.addElement("supercars")
            .addAttribute("company", "Ferrai");

         supercarElement.addElement("carname")
            .addAttribute("type", "Ferrari 101")
            .addText("Ferrari 101");

         supercarElement.addElement("carname")
            .addAttribute("type", "sports")
            .addText("Ferrari 202");


         //Creating a FileOutputStream
         FileOutputStream newFile = new FileOutputStream("D://newDOM4jFile.xml");

         //Writing the XML document into file
         XMLWriter writer = new XMLWriter(newFile);
         writer.write( document );

         //Printing the XML document
         OutputFormat format = OutputFormat.createPrettyPrint();
         XMLWriter consoleWriter = new XMLWriter( System.out, format );
         consoleWriter.write( document );

      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

Output

输出窗口显示 XML 内容,如下所示:

<?xml version = "1.0" encoding = "UTF-8"?>
<cars>
   <supercars company = "Ferrari">
      <carname type = "formula one">Ferrari 101</carname>
      <carname type = "sports">Ferrari 202</carname>
   </supercars>
</cars>