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>
廣告