dom解析xml文档过程总结

原创 2007年09月15日 11:02:00

先得到dom解析后的文档树,和root元素.

然后递归解析,这个程序中没说明如何保存相应节点的值,如果要用hashtable数据结构保存各个节点的值,程序还得做相应调整,因为在这个递归中textvalue是在子调用中输出的,还得返回到上一层,跟父函数的节点名字对应 

 

DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();

             try {

                    DocumentBuilder dombuilder=domfac.newDocumentBuilder();

                    //InputStream is=new FileInputStream("library.xml");
      InputStream is=new FileInputStream("library.xml");

                    Document doc=dombuilder.parse(is);

                    Element root=doc.getDocumentElement();//根节点
                 }
  /*******************************************************************/
  得到root后,进行递归调用,解析xml
 
   public void digui(Node root)
   {
       if(root.getNodeType()==Node.TEXT_NODE)
       {
            //root.getNodeValue()为所要文本   
            return ;
       }
       //获得root节点对应的所有属性值
       getAttributes(root);
      
       for(Node node=root.getFirstChild();node!=null;node=node.getNextSibling())
       {//这里用这个方式比较合适,如果把textvalue拿到这里来输出,就需要判断是不是ELEMENT_NODE类型,因为

        //textvalue也是node的孩子,但它是TEXT_NODE类型的,无孩子节点

       //对于一个节点,node.getFirstChild().getNodeValue()才是这个节点的value
              digui(node);
       }
   }
   public void getAttributes(Node root)//获得root节点的所有属性值
   {
       NamedNodeMap map = root.getAttributes();//输出某个元素的属性部分
       if(map==null)
       {
         System.out.println("point null");
       }
       else
       {
            for(int i=0;i<map.getLength();i++)//输出某个元素的属性部分,这里的getLength函数得到的长度也确实是
            {                                                         //root节点所拥有的属性的个数
                   Node node = map.item(i);
                   Node nodename = map.getNamedItem("size");
                   if(node.getNodeType()==Node.ATTRIBUTE_NODE)//这个其实可以不判断,肯定是属性节点
                   {
                     if(node.getNodeName().equalsIgnoreCase("size"))
                        {
                      System.out.println("size: "+node.getNodeValue());
                     }
                     else if(node.getNodeName().equalsIgnoreCase("height"))
                     {
    System.out.println("height: "+node.getNodeValue());
                     }
                   }
            }
        }
   } 

相关文章推荐

DOM、SAX、SimpleXML方式解析XML文档总结

本周学习知识点: XML扩展性标记语言:      一.DOM方式操作   二.SAX方式操作   三.simpleXML的方式   四.DOM 与 simpleXML相互转换  ...

jaxp解析器用dom方式操作xml文档的总结

1. xml解析技术概述  解析xml文档一般有两种技术:dom(Document Object Model)和sax(Simple API for XML)。dom即文档对象模型,是W3C组织推荐的...
  • eson_15
  • eson_15
  • 2016年05月26日 18:48
  • 2412

使用DOM解析XML文档

  • 2012年04月03日 22:32
  • 1.22MB
  • 下载

dom4j进行xml文档的解析

  • 2013年01月20日 16:00
  • 5KB
  • 下载

JavaEE实战——XML文档DOM、SAX、STAX解析方式详解

本文主要介绍XML文档作为存储和传输数据的三种解析方式,其各自主要的思想、实现方式、CURD实现,以及最后展示一个综合的实战例子加以巩固理解。...

DOM和SAX解析XML文档

  • 2007年10月19日 15:03
  • 11KB
  • 下载

java中用DOM解析XML文档程序实现

1 首先在建立Maven工程 ,在target下建立一个新的xml文件 输入: 张三 34 男 3000 李四 21 女 4000 王五...

Dom4j解析和生成XML文档

转载地址:http://blog.csdn.net/chenghui0317/article/details/11486271

dom4j生成XML文档及解析

dom4j生成XML文档及解析2008-07-23 22:19import java.io.File; import java.io.FileOutputStream; import java.i...
  • sxsboat
  • sxsboat
  • 2011年09月22日 08:07
  • 583
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:dom解析xml文档过程总结
举报原因:
原因补充:

(最多只允许输入30个字)