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