使用DOM技术来对XML文档进行解析范例

来源:互联网 发布:c语言课程设计案例精编 编辑:程序博客网 时间:2024/06/05 08:45

    <?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文档一样

原创粉丝点击