📅  最后修改于: 2023-12-03 15:14:47.264000             🧑  作者: Mango
DOM(Document Object Model)解析器是一种处理XML文档的方法。它可以将XML文档转换为一个由节点和对象组成的树形结构。
与SAX解析器不同,DOM解析器会将整个XML文档一次性读入到内存中,并在内存中构建一个树形结构。这使得DOM解析器能够进行正反两种方向的访问。
DOM解析器比SAX解析器更适合处理小型XML文档,因为DOM解析器需要在内存中保存整个文档的节点和对象。对于非常大的XML文档,使用DOM解析器可能会因内存不足而导致程序崩溃。
使用DOM解析器创建XML文档可以通过以下步骤实现:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class CreateXML {
public static void main(String[] args) {
try {
// Step 1: Create a DocumentBuilderFactory
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
// Step 2: Create a DocumentBuilder from the DocumentBuilderFactory
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
// Step 3: Create a Document object using the DocumentBuilder
Document document = documentBuilder.newDocument();
// Step 4: Create elements and attributes
Element root = document.createElement("students");
Element student = document.createElement("student");
student.setAttribute("id", "1");
Element name = document.createElement("name");
name.appendChild(document.createTextNode("Alice"));
Element age = document.createElement("age");
age.appendChild(document.createTextNode("20"));
// Step 5: Add elements and attributes to the Document object
student.appendChild(name);
student.appendChild(age);
root.appendChild(student);
document.appendChild(root);
// Step 6: Write the Document object to an XML file
javax.xml.transform.TransformerFactory tf = javax.xml.transform.TransformerFactory.newInstance();
javax.xml.transform.Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes");
java.io.StringWriter sw = new java.io.StringWriter();
javax.xml.transform.dom.DOMSource source = new javax.xml.transform.dom.DOMSource(document);
javax.xml.transform.stream.StreamResult result = new javax.xml.transform.stream.StreamResult(sw);
transformer.transform(source, result);
String xmlString = sw.toString();
System.out.println(xmlString);
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
} catch (javax.xml.transform.TransformerException tfe) {
tfe.printStackTrace();
}
}
}
DOM解析器可以让程序员创建和处理XML文档,它允许我们使用XML来存储和传输信息。在创建XML文档时,我们可以使用Java API提供的标准DOM解析器来实现。