有如下的xml语句
<type1>
    <type2>
       <type3>hello<type3>
    <type2>
<type1>
请问type2和type3有什么区别?应当如何判别?我使用的是微软提供的IXMLDOMNode和IXMLDOMNodeList
设type2对应IXMLDOMNode指针为node2;type3对应IXMLDOMNode指针为node3,
int num2 = node2->childNodes->length;
int num3 = node3->childNodes->length;
结果num2和num3的值都为1,这种方法感觉不行!

解决方案 »

  1.   

    应该这样才对吧
    <type1> 
        <type2> 
          <type3>hello </type3> 
        </type2> 
    </type1> 
    我也是刚接触,childNodes->length这语句是得到节点长度吧
    int num2 = node2->childNodes->length;得到的是在<type2> 下节点长度应该是<type3>。
    int num3 = node3->childNodes->length;不清楚了,得到本身的?
      

  2.   

    <type1> 
        <type2> 
          <type3>hello </type3> 
        </type2> 
    </type1> 
      

  3.   

    hello是一个文本类型的节点,是type3的子节点,所以num3=1。
    注意节点(Node)和元素(Element)的区别,如果用的是IXMLDOMElement,那么num2=1,num3=0
      

  4.   

    我试了一下,num3=1,不是0;
    现在把问题换一种说法:
    请问利用微软提供的IXMLDOMNode、IXMLDOMNodeList和IXMLDOMElement等接口,如何区别type2和type3,即如果解析到type2时,继续向下解析,解析到type3时,不在向下解析,输出内容hello?
    要提供一种通用的方法,有些情况下可能嵌套很多。
      

  5.   

    两者本身表示同一个对象,但是用途不一样,节点通常用于DOM导航,元素通常用于访问对象的属性和方法,一个纯文本内容的对象用于元素是没有多少意义的,但是可能会用于DOM导航操作,所以它是一个独立的节点,但不是独立的元素,而是作为父元素的text属性存在
      

  6.   

    js语法:
    type3 = type2.selectSingleNode("type3");
    type3.text == "hello"vc语法:
    IXMLDOMElementPtr type2 = ...;
    IXMLDOMElementPtr type3 = type2->selectSingleNode("type3");
    _bstr_t hello = type3->text;
    assert(hello == "hello");
      

  7.   

      自己嵌套查询了~要不用现成的类 CMarkUp TinyXML