一、什么是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/n/148743.html