Java DOM4J 解析器 - 创建 XML 文档



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

使用 Java DOM4J 解析器创建 XML

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

  • 步骤 1:创建新的文档
  • 步骤 2:创建和添加 XML 元素
  • 步骤 3:创建 FileOutputStream
  • 步骤 4:将 XML 文档写入文件
  • 步骤 5:打印 XML 文档

步骤 1:创建新的文档

org.dom4j 包的 DocumentHelper 类提供了一些辅助方法来使用 DOM4J。createDocument() 方法创建一个新文档,如下所示:

Document document = DocumentHelper.createDocument();

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

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

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

步骤 3:创建 FileOutputStream

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

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

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

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

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

步骤 5:打印 XML 文档

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

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

创建 XML 文件

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

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

addText() 方法将文本内容添加到元素中。它将文本内容作为字符串,并将其添加到相应的元素中。

示例

使用上面讨论的方法,我们将创建一个 XML 文件,其中“cars”作为根元素,company 作为其属性。让我们添加两个“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();
      }
   }
}

输出

输出窗口显示 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>
广告