一、什麼是Java Document類
Document是Java中的一種類,用於描述HTML或XML文檔。它提供了許多方法,可以獲取文檔的信息,其中包括文檔的標題、元素、屬性等等。使用Document類,我們可以方便地獲取HTML或XML文檔中的信息,以便我們對文檔進行各種操作。
二、Java Document類的用法
1、創建Document對象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dbf.newDocumentBuilder(); Document document = builder.parse(new File("file.xml"));
在上述代碼中,首先我們使用DocumentBuilderFactory類的newInstance()方法獲取一個工廠實例,然後使用該實例獲取一個DocumentBuilder對象。最後,我們使用DocumentBuilder對象的parse()方法傳入一個文件路徑參數,就可以得到一個Document對象。
2、獲取文檔元素
Element rootElement = document.getDocumentElement(); System.out.println("根元素標籤名:" + rootElement.getTagName());
在上述代碼中,我們使用Document對象的getDocumentElement()方法獲取文檔的根元素,並獲取該元素的標籤名。
3、獲取元素屬性
NamedNodeMap attrs = element.getAttributes(); Node idAttr = attrs.getNamedItem("id"); System.out.println("id屬性值:" + idAttr.getNodeValue());
在上述代碼中,我們首先使用Element對象的getAttributes()方法獲取元素的所有屬性,然後使用NamedNodeMap對象的getNamedItem()方法獲取指定名稱的屬性。最後,我們通過Node對象的getNodeValue()方法獲取屬性值。
4、獲取元素子節點
NodeList childNodes = element.getChildNodes(); for(int i = 0; i < childNodes.getLength(); i++) { Node child = childNodes.item(i); if(child instanceof Element) { System.out.println("節點名:" + child.getNodeName() + " 節點值:" + child.getTextContent()); } }
在上述代碼中,我們使用Element對象的getChildNodes()方法獲取元素的所有子節點,然後遍歷每個子節點,如果子節點是一個Element對象,就獲取其節點名和節點值(即文本內容)。
三、Java Document類示例代碼
1、解析XML文檔
假設我們有一個XML文件,其內容如下:
Tom 18 Lucy 19
下面是使用Java Document類解析該XML文檔的示例代碼:
import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class XMLParser { public static void main(String[] args) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dbf.newDocumentBuilder(); Document document = builder.parse(new File("test.xml")); Element rootElement = document.getDocumentElement(); System.out.println("根元素標籤名:" + rootElement.getTagName()); NodeList studentNodes = rootElement.getElementsByTagName("student"); for(int i = 0; i < studentNodes.getLength(); i++) { Element student = (Element) studentNodes.item(i); NamedNodeMap attrs = student.getAttributes(); Node idAttr = attrs.getNamedItem("id"); System.out.println("id屬性值:" + idAttr.getNodeValue()); NodeList childNodes = student.getChildNodes(); for(int j = 0; j < childNodes.getLength(); j++) { Node child = childNodes.item(j); if(child instanceof Element) { System.out.println("節點名:" + child.getNodeName() + " 節點值:" + child.getTextContent()); } } } } }
2、生成XML文檔
假設我們要生成一個XML文件,其內容如下:
Tom 18 Lucy 19
下面是使用Java Document類生成該XML文檔的示例代碼:
import java.io.File; import java.io.FileOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Element; public class XMLGenerator { public static void main(String[] args) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dbf.newDocumentBuilder(); org.w3c.dom.Document document = builder.newDocument(); Element rootElement = document.createElement("students"); document.appendChild(rootElement); Element student1 = document.createElement("student"); student1.setAttribute("id", "001"); Element name1 = document.createElement("name"); name1.setTextContent("Tom"); Element age1 = document.createElement("age"); age1.setTextContent("18"); student1.appendChild(name1); student1.appendChild(age1); rootElement.appendChild(student1); Element student2 = document.createElement("student"); student2.setAttribute("id", "002"); Element name2 = document.createElement("name"); name2.setTextContent("Lucy"); Element age2 = document.createElement("age"); age2.setTextContent("19"); student2.appendChild(name2); student2.appendChild(age2); rootElement.appendChild(student2); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); DOMSource xmlSource = new DOMSource(document); StreamResult outputTarget = new StreamResult(new FileOutputStream(new File("test.xml"))); transformer.transform(xmlSource, outputTarget); } }
結語
Java Document類提供了一種方便的方式來解析和生成HTML或XML文檔。無論是在讀取網路上的數據,還是在將本地數據以XML格式存儲時,Document類都能夠幫助我們方便地實現這些任務。通過本文的介紹和示例代碼,相信讀者已經了解了Document類的使用方法,並能夠應用Document類來進行XML文檔的解析和生成。
原創文章,作者:QUWY,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/148743.html