
- Java XML 教程
- Java XML 首頁
- Java XML 概述
- Java XML 解析器
- Java DOM 解析器
- Java DOM 解析器
- 解析 XML 文件
- 查詢 XML 文件
- 建立 XML 文件
- 修改 XML 文件
- Java SAX 解析器
- Java SAX 解析器
- 解析 XML 文件
- 查詢 XML 文件
- 建立 XML 文件
- 修改 XML 文件
- JDOM XML 解析器
- JDOM XML 解析器
- 解析 XML 文件
- 查詢 XML 文件
- 建立 XML 文件
- 修改 XML 文件
- Java StAX 解析器
- Java StAX 解析器
- 解析 XML 文件
- 查詢 XML 文件
- 建立 XML 文件
- 修改 XML 文件
- Java XPath 解析器
- Java XPath 解析器
- 解析 XML 文件
- 查詢 XML 文件
- 建立 XML 文件
- 修改 XML 文件
- Java DOM4J 解析器
- Java DOM4J 解析器
- 解析 XML 文件
- 查詢 XML 文件
- 建立 XML 文件
- 修改 XML 文件
- Java XML 有用資源
- Java XML - 問答
- Java XML - 快速指南
- Java XML - 有用資源
- Java XML - 討論
Java JDOM 解析器 - 建立 XML 文件
Java JDOM 解析器是一個 Java API,它包含用於從頭建立 XML 文件的類和方法。我們可以建立一個新的 JDOM 文件物件,並使用 Document 和 Element 介面中提供的方法新增元素和屬性。在本章中,我們將詳細介紹如何使用 setRootElement()、addContent()、setText() 和 setAttribute() 方法建立 XML 檔案。
使用 Java JDOM 解析器建立 XML
我們可以透過以下步驟使用 JDOM 解析器在 Java 中建立 XML 文件:
- 步驟 1:建立 JDOM 文件物件
- 步驟 2:建立和追加根元素
- 步驟 3:建立元素和屬性
- 步驟 4:將元素追加到根元素
- 步驟 5:將內容寫入 XML 檔案
- 步驟 6:使用控制檯測試輸出
步驟 1:建立 JDOM 文件物件
org.jdom2 包包含 Document 類。它代表 XML 文件。此類具有訪問根元素以及文件級別資訊的方法。我們如下建立一個新文件:
Document doc = new Document();
步驟 2:建立和追加根元素
XML 文件必須包含一個根元素。我們使用 org.jdom2 包的 Element 類建立根元素。如果我們向建構函式提供一個字串,它將建立一個具有該提供的本地名稱的元素。
Document 類中的 setRootElement() 方法設定文件的根元素。此方法將 Element 作為引數,並將其設定為根元素。如果根元素已存在,則舊的根 Element 將被此提供的 Element 替換。
Element RootElement = new Element("root"); doc.setRootElement(RootElement);
步驟 3:建立元素和屬性
我們可以按照上一步建立根元素的方式建立元素。要為 Element 設定屬性,我們使用 setAttribute() 方法,如下所示:
Element newElement = new Element("FirstElement"); newElement.setAttribute("attr_name","attr_value");
步驟 4:將元素追加到根元素
上一步中建立的元素現在使用 addContent() 方法附加到根元素。此方法採用內容列表形式的單個元素或元素集合,並相應地將它們新增到元素中。
RootElement.addContent(newElement);
步驟 5:將內容寫入 XML 檔案
TransformerFactory 類用於建立 Transformer 物件的新例項。使用 Transformer 類中的 transform() 函式,將源轉換到目標結果。我們透過將文件作為引數來建立 JDOMSource 物件。此 JDOMSource 物件將轉換為 StreamResult,如下所示:
TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); JDOMSource source = new JDOMSource(doc); StreamResult result = new StreamResult(new File("newFile.xml")); transformer.transform(source, result);
步驟 6:使用控制檯測試輸出
這是一個可選步驟,用於測試目的。要在控制檯上列印輸出,將建立一個 XMLOutputter 物件,並傳遞 Document 物件,如下所示:
XMLOutputter xmlOutput = new XMLOutputter(); xmlOutput.setFormat(Format.getPrettyFormat()); xmlOutput.output(doc, System.out);
建立簡單的 XML 檔案
使用上述步驟,讓我們建立一個僅包含根元素的簡單 XML 檔案。建立一個新的文件物件,並使用 setRootElement() 方法附加根元素。
Element 物件的 setText() 方法採用字串形式的文字內容,並將其附加到 Element。
示例
這是我們需要建立的 XML 檔案。它有一個名為“cars”的根元素和文字內容“Ferrari”。
<cars>Ferrari</cars>
下面的 CreateXMLFile.java 建立 XML 檔案並將其儲存在 D 盤中,檔名設定為“cars.xml”。
import java.io.File; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.output.Format; import org.jdom2.output.XMLOutputter; import org.jdom2.transform.JDOMSource; public class CreateXMLFile { public static void main(String[] args) { try{ //Creating JDOM Document object Document doc = new Document(); //Creating and appending Root Element Element carsElement = new Element("cars"); carsElement.setText("Ferrari"); doc.setRootElement(carsElement); //writing the content into XML file TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); JDOMSource source = new JDOMSource(doc); StreamResult result = new StreamResult(new File("D:\\cars.xml")); transformer.transform(source, result); //Output to console for testing XMLOutputter xmlOutput = new XMLOutputter(); xmlOutput.setFormat(Format.getPrettyFormat()); xmlOutput.output(doc, System.out); } catch(Exception e) { e.printStackTrace(); } } }
為了測試目的,我們在控制檯上列印了 XML 文件的內容。
<?xml version="1.0" encoding="UTF-8"?> <cars>Ferrari</cars>
建立屬性
現在讓我們向根元素新增子元素。此外,讓我們向元素新增屬性。在此示例中,我們將看到如何建立元素及其屬性並將它們附加到根元素。每個元素上的 setAttribute() 方法設定屬性,而 setText() 方法用於設定每個元素的文字內容。
示例
這是我們需要建立的 cars.xml 檔案:
<cars> <supercars company="Ferrari"> <carname type="formula one">Ferrari 101</carname> <carname type="sports">Ferrari 202</carname> </supercars> </cars>
下面的 CreateAttributes.java 程式在 D 盤中建立 cars.xml 檔案。
import java.io.File; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import org.jdom2.Attribute; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.output.Format; import org.jdom2.output.XMLOutputter; import org.jdom2.transform.JDOMSource; public class CreateAttributes { public static void main(String[] args) { try{ //Creating JDOM Document object Document doc = new Document(); //Creating and appending Root Element Element carsElement = new Element("cars"); doc.setRootElement(carsElement); //Creating elements and attributes Element supercarElement = new Element("supercars"); supercarElement.setAttribute("company","Ferrari"); Element carElement1 = new Element("carname"); carElement1.setAttribute("type","formula one"); carElement1.setText("Ferrari 101"); Element carElement2 = new Element("carname"); carElement2.setAttribute("type","sports"); carElement2.setText("Ferrari 202"); supercarElement.addContent(carElement1); supercarElement.addContent(carElement2); //Appending Elements to Root carsElement.addContent(supercarElement); //writing the content into XML file TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); JDOMSource source = new JDOMSource(doc); StreamResult result = new StreamResult(new File("D:\\Jdomcars.xml")); transformer.transform(source, result); //Output to console for testing XMLOutputter xmlOutput = new XMLOutputter(); xmlOutput.setFormat(Format.getPrettyFormat()); xmlOutput.output(doc, System.out); } catch(Exception e) { e.printStackTrace(); } } }
輸出視窗顯示檔案內容如下:
<?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>