在 Java 中將 XML 物件轉換為字串
一、簡介
XML(可擴展標記語言)是最受歡迎的結構化資訊模式之一。此外,Java 中 XML Documents
的解析和操作通常是使用 DOM(文件物件模型)和 SAX(XML 的簡單 API)等技術來完成的。
在某些情況下,可能需要將 XML Document
物件轉換為其字串形式,該形式可用於將 XML 資訊儲存在資料庫內或透過網路傳遞。
在本教程中,我們將討論在 Java 中將 XML Document
物件轉換為字串的幾種方法。
2. 範例
假設我們有以下Document
物件:
Document document = // ...
該Document
物件表示記憶體中的 XML 內容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>
<child1>This is child element 1</child1>
<child2>This is child element 2</child2>
</root>
現在,我們需要將此 XML Document
物件轉換為 Java 字串。
3. 使用 XML 轉換 API
Java 中的javax.xml.transform
套件包含用於執行 XML 轉換的類別和介面。它的功能之一是將XML Document
物件轉換為字串表示形式。以下程式碼示範如何使用javax.xml.transform
套件將此 XML Document
物件解析為 Java 字串:
@Test
public void givenXMLDocument_whenUsingTransformer_thenConvertXMLToString()
throws TransformerException {
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
StringWriter stringWriter = new StringWriter();
transformer.transform(new DOMSource(document), new StreamResult(stringWriter));
String result = stringWriter.toString();
assertTrue(result.contains("<root>"));
assertTrue(result.contains("This is child element 1"));
assertTrue(result.contains("This is child element 2"));
}
我們首先實例化一個TransformerFactory
和一個Transformer
,用於 XML 轉換。然後,我們建構一個StringWriter
以文字形式儲存轉換後的 XML。然後, transform()
方法更改 XML Document
,我們可以使用stringWrite.toString()
方法將其儲存到result
字串中。
4. 使用 Java XMLBeans
在 Java XML 操作領域中使用XmlBeans
方法可以輕鬆且靈活地在 XML Document
和字串之間進行轉換。我們使用**XmlObject.Factory.parse(document)
,它將 XML Document
解析為XmlObject
以供後續操作活動:**
@Test
public void givenXMLDocument_whenUsingXmlBeans_thenConvertXMLToString() {
try {
XmlObject xmlObject = XmlObject.Factory.parse(document);
XmlOptions options = new XmlOptions();
options.setSavePrettyPrint();
options.setUseDefaultNamespace();
options.setSaveAggressiveNamespaces();
String xmlString = xmlObject.xmlText(options);
xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>" + xmlString;
assertTrue(xmlString.contains("<root>"));
assertTrue(xmlString.contains("This is child element 1"));
assertTrue(xmlString.contains("This is child element 2"));
} catch (XmlException e) {
e.printStackTrace();
}
}
在上面的測試方法中,我們使用XmlOptions
將文件解析為XmlObject
,以自訂輸出格式,例如漂亮列印、命名空間等。此外,還執行asserts
來確定產生的XML 字串包含XML 聲明和特定XML 元素,並且元素內容。
5. 結論
在本教學中,我們討論如何在 Java 中將 XML Document
物件轉換為字串。
與往常一樣,本文的完整程式碼範例可以在 GitHub 上找到。