將包含 XML 的字串轉換為 org.w3c.dom.Document
一、簡介
當今最常見的資料格式之一是 XML(可擴展標記語言),它廣泛用於在應用程式之間建立和交換資料。
此外,這種用例在 Java 中很常見,我們必須將一些 XML 標記文字變更為org.w3c.dom.Document
物件。
在本教程中,我們將討論如何將包含基於 XML 的內容的字串轉換為 Java 中的Org.w3c.dom.Document
。
2. org.w3c.dom.Document
org.w3c.dom.Document
是 Java 中文檔物件模型 (DOM) XML API 的一個組成部分。這個基本類別代表整個 XML 文檔,並提供一組全面的方法,用於導航、修改和檢索 XML 文檔中的資料。在 Java 中使用 XML 時, the org.w3c.dom.Document
物件成為不可或缺的工具。
為了更好地理解如何建立org.w3c.dom.Document
對象,讓我們看一下以下範例:
try {
// Create a DocumentBuilderFactory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// Create a DocumentBuilder
DocumentBuilder builder = factory.newDocumentBuilder();
// Create a new Document
Document document = builder.newDocument();
// Create an example XML structure
Element rootElement = document.createElement("root");
document.appendChild(rootElement);
Element element = document.createElement("element");
element.appendChild(document.createTextNode("XML Document Example"));
rootElement.appendChild(element);
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
在前面的程式碼中,我們首先建立解析 XML 所需的元素,例如DocumentBuilderFactory
和DocumentBuilder
。之後,它會建立一個基本的 XML 模式,其中一個標記為“root”
的初始節點元素包含另一個稱為“element”
的子節點元素,該子節點元素具有字串“XML document example”
。此外,XML 輸出應如下所示:
<root>
<element>XML Document Example</element>
</root>
3. 從字串中解析 XML
需要解析 XML 字串才能將包含 XML 的字串轉換為org.w3c.dom.Document
。幸運的是,Java 中有幾個 XML 解析函式庫,其中包含 DOM、SAX 和 StAX。
本文重點介紹 DOM 解析器,進行簡單的解釋。讓我們透過一個逐步範例來了解如何使用 XML 解析字串並建立org.w3c.dom.Document
物件:
@Test
public void givenValidXMLString_whenParsing_thenDocumentIsCorrect()
throws ParserConfigurationException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
String xmlString = "<root><element>XML Parsing Example</element></root>";
InputSource is = new InputSource(new StringReader(xmlString));
Document xmlDoc = null;
try {
xmlDoc = builder.parse(is);
} catch (SAXException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
assertEquals("root", xmlDoc.getDocumentElement().getNodeName());
assertEquals("element", xmlDoc.getDocumentElement().getElementsByTagName("element").item(0).getNodeName());
assertEquals("XML Parsing Example",
xmlDoc.getDocumentElement().getElementsByTagName("element").item(0).getTextContent());
}
在上面的程式碼中,我們建立了對於 XML 解析至關重要的DocumentBuilderFactory
和DocumentBuilder
。此外,我們還定義了一個範例 XML 字串 ( xmlString
),該字串將轉換為用於解析的InputSource
。我們在try-catch
區塊中解析 XML 並catch
任何可能的異常,例如SAXException
或IOException
。
最後,我們使用一系列斷言來驗證解析的 XML 文件的正確性,包括使用getDocumentElement().getNodeName()
檢查根元素的名稱,使用getDocumentElement().getElementsByTagName()
子元素的名稱,以及文字子元素中的內容。
4。結論
總而言之,對於任何在眾多應用程式中處理基於 XML 的資料(從資料處理到 Web 服務或配置任務)的有能力的 Java 開發人員來說,了解如何operate org.w3c.dom.Document
(NS) 至關重要。
與往常一樣,本文的完整程式碼範例可以在 GitHub 上找到。