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解析XML

DOM(Document Object Model):W3C组织推荐的处理XML的标准接口.  http://www.w3.org/DOM/DOMTR.html  DOM特点:首先将整...
  • u013516966
  • u013516966
  • 2015年01月29日 02:41
  • 914

sax和dom在解析xml文档时有什么区别

当你需要处理XML文档时,你的首要选择是使用DOM(文档对象模型)还是使用SAX(用于XML的简单API),即当前使用的两个主要的XML API。你可以使用任何一种(或者在同一时间使用两种)来处理XM...
  • zhupengqq
  • zhupengqq
  • 2016年04月18日 18:31
  • 1288

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
  • 2614

5、使用DOM解析XML文档

DOM:Document Object Model (文档对象模型) 1、DOM与SAX W3C制定了一套书写XML分析器的标准接口规范--DOM。除此之外,XML_DEV邮件列表中的成员根据应用...
  • kaoa000
  • kaoa000
  • 2013年02月27日 10:41
  • 2754

用dom解析如下xml文件内容

用dom解析如下xml文件内容 成都春熙路 成都盐市口 成都布鲁明顿 解析之后把所有年龄大于18的人的信息存储在List对象中, User类...
  • miachen520
  • miachen520
  • 2016年06月30日 18:31
  • 768

利用DOM解析和创建xml文件

XML解析器是指可以解析XML文件的程序 常见解析器有 1.     SAX解析器,用于XML的简单API 2.     DOM解析器,文档对象模型 文档对象模型就是利用对象来把文档模型化,这...
  • moonhelena
  • moonhelena
  • 2016年07月20日 23:03
  • 385

java Dom 解析xml文档,实现xml文档结点的增删改查,遍历

java Dom 解析xml文档,实现xml文档结点的增删改查,遍历
  • yxmaomao1991
  • yxmaomao1991
  • 2016年03月23日 21:23
  • 2563

dom解析方式对xml文档进行操作

java就业培训教程 张孝祥 36.2元 javascript就业培训教程 张孝祥 ...
  • qq_30638831
  • qq_30638831
  • 2016年04月07日 14:45
  • 722

DOM_概述&解析特点

DOM |--早期页面都是一些静态的页面,所谓的静态页面,就是页面中又给我们提供了一些相关的资源;我们只要去看就可以了。我们只要点击超链接就可以了; |...
  • java9832
  • java9832
  • 2015年07月19日 00:14
  • 698

Java解析XML文件方法之一(DOM)

DOM的全称是Document Object Model,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对...
  • zp357252539
  • zp357252539
  • 2015年08月29日 08:45
  • 1373
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:dom解析xml文档过程总结
举报原因:
原因补充:

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