1、要解析的student.xml文档如下: <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/css" href="students.css"?> <!DOCTYPE students SYSTEM "students.dtd"> <students> <student sn="01"> <name>张三</name> <age>18</age> </student> <student sn="02"> <name>李四</name> <age>20</age> </student> </students> 2、解析XML文档 package dom.sample; import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; public class ParseXML{ public static void main(String[] args) { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { DocumentBuilder db = dbf.newDocumentBuilder(); //解析students.xml Document doc = db.parse(new File("students.xml")); Element element = doc.getDocumentElement();//返回文档元素 System.out.println("原始文档树节点信息:"); walkNode(element, 0); //遍历文档并输出信息 updateNode(element); //修改文档 System.out.println("/r修改第1个节点后的数据:"); walkNode(element, Node.TEXT_NODE);//遍历文本节点 deleteNode(doc); //删除节点 System.out.println("/r删除第2个节点后的节点数据:"); walkNode(element, Node.ELEMENT_NODE);//遍历元素 } catch (Exception e) { e.printStackTrace(); } } //遍历文档,并指定了输出模式 private static void walkNode(Node node, int printMode) { NodeList nl = node.getChildNodes();//获取子节点 printNode(node, printMode); for (int i = 0; i < nl.getLength(); i++) {//迭代输出 Node curnode = nl.item(i); if (curnode.hasChildNodes()) walkNode(curnode, printMode); //递归调用 else printNode(curnode, printMode); //按指定模式输出 } } private static void printNode(Node node, int printMode) { switch (printMode) { case 0: //打印输出节点名和节点值 System.out.print(node.getNodeName() + "/t" + node.getNodeValue()); break; case 1: if (node.getNodeType() == Node.ELEMENT_NODE) System.out.print(node.getNodeName() + "/t" + node.getNodeValue() + ";"); break; case 3: if (node.getNodeType() == Node.TEXT_NODE) System.out.print(node.getNodeValue().trim() + "/t"); } } //修改节点 private static void updateNode(Element element) { NodeList nl = element.getElementsByTagName("age"); Node node = nl.item(0); //第1个节点 node.getFirstChild().setNodeValue("28");//节点值修改为28 } //删除节点 private static void deleteNode(Document doc) { NodeList nl = doc.getElementsByTagName("student"); Node node = nl.item(1); //第2个节点 node.getParentNode().removeChild(node); //删除第2个节点 } }