<?xml version="1.0" encoding="UTF-8"?> <学生名册>     <学生  学号="1">        <姓名>张三</姓名>        <性别>男</性别>        <年龄>21</年龄>     </学生>     <学生  学号="2">        <姓名>李四</姓名>        <性别>女</性别>        <年龄>20</年龄>     </学生>     <学生  学号="3">        <姓名>王五</姓名>        <性别>男</性别>        <年龄>23</年龄>      </学生> </学生名册> 

【注】本例是按照看圣思园,张龙老师的XML视频实例写出来的

   package com.jiangqq.xml.dom;   import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Attr; import org.w3c.dom.Comment; 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; /**  * 使用递归方式来对XML文档进行解析,且将内容输入到命令行上面  *   * @author jiangqq  *   */ public class DomTest03 { public static void main(String[] args) throws Exception {            DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();  DocumentBuilder db=dbf.newDocumentBuilder();  Document document=db.parse(new File("student.xml"));  //获得根元素节点  Element root=document.getDocumentElement(); parseElement(root); }   private static void parseElement(Element element) {   String tagName=element.getNodeName();   NodeList chirdren=element.getChildNodes();    System.out.print("<"+tagName);   //element元素的所有属性所构成NameNodeMap对象,需要对其进行判断   NamedNodeMap map=element.getAttributes();       if(null!=map)       {       for(int i=0;i<map.getLength();i++)       {       //获得该元素的每个属性       Attr attr=(Attr)map.item(i);       String attrName=attr.getNodeName();       String attrValue=attr.getNodeValue();              System.out.print(" " + attrName + "=\""+attrValue+"\"");              }       }       System.out.print(">");              for(int i=0;i<chirdren.getLength();i++)       {       Node node=chirdren.item(i);       //获得节点的类型       short nodeType=node.getNodeType();              if(nodeType==Node.ELEMENT_NODE)       {       //是元素,继续递归       parseElement((Element)node);       }       else if(nodeType==Node.TEXT_NODE)       {       //递归出口       System.out.print(node.getNodeValue());       }       else if(nodeType==Node.COMMENT_NODE)       {       System.out.print("<!--");       Comment comment=(Comment)node;       //获得注释内容       String date = comment.getData();       System.out.print(date+"-->");       }       }       System.out.print("</"+tagName+">"); } }



XML文档如下:


解析结果与XML文档一样