正在学习xml解析,j2se6.0的API,使用DOM方式解析,程序运行成功,但是对于一下这行代码,很是费解,
    doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());查了API文档,方法item(i)返回的是Node类对象,为什么还要调用getFirstChild()方法?
以下是这两个方法的声明:
Node item(int index);
Node getFirstChild();我试着这样写:doc.getElementsByTagName("NO").item(i).getNodeValue());
得到是null。这两个方法的区别都是得到的Node类型的对象,但是有什么区别呢??
望高手不吝赐教,不胜感激!!

解决方案 »

  1.   

    因为Text也是Node.
    doc.getElementsByTagName("NO").item(i)拿到的是Tag类型Node,他包含一个类型是Text的Node.
      

  2.   


    不是很明白,刚刚查看api,没有Tag类型。
    什么是Tag类型?
    Node的子接口中没有Tag。
      

  3.   

    Node的设计,是一种 合成模式
    类似java中,文件夹和文件都是File(Node)
    文件夹下可能还有多个Files,得到第i个文件夹(item(i))
    再得到item(i)下的第一个文件(getFirstChild())
      

  4.   


    好像有点明白了。
    Tag是一个标签,如<name>zhangsan</name>
    这个标签中包含一个Text的标签,但是没有 <></> 这种形式。其值为zhangsan。我这样理解对吗?
      

  5.   


    恩,明白了。在xml中,所有都是结点Node,
    但是形式很多种,Text就是一种形式。这种合成模式好厉害。
    用面向对象的思想将xml中的所有内容统一了。