Delphi msxml 编程
  如何判断一个节点是否存在?要如何写?当它不存在时,返回是什么值?  
如下代码:   
var
  TmpEle,Element_Quato:Olevariant;
TmpEle :=Element_Quato.childNodes.item[j].selectSingleNode('LSTADJUSTOBJ');
if varisnull(TmpEle) then
  begin
    showmessage('返回空集合');
  end
else
  beign
    showmessage('有值');
  end;
(而这句返回集合却是错误的"TmpEle: OleVariant $12FAB8",TmpEle=$00000000,
难道这句返回不是集合数据???为什么呢?
Element_Quato.childNodes.item[j]是有值的,这个返回也正确。)

解决方案 »

  1.   

    hasChildNodes 是判断是否有子节点,而不是指定的某一个节点。
      

  2.   

    试试uses msxml;
    var
     doc:IXMLDOMDocument;
     Node1:ixmlDomNode;
    begin
     doc := CoDOMDocument.create;
     doc.async:=False;
     doc.load('c:\xxx.xml');
     Node1 := doc.selectSingleNode('//root/CLASS/);
     if not (Node1=nil) then begin
      ...
      ...
     end;
     Doc := nil;
    end;
      

  3.   

    回复:SonicX 
    我对Node1 是无类型,不能用  if not (Node1=nil) then begin 看看
    var
      TmpEle,Element_Quato:Olevariant;
    ,因此只能用
    if varisnull(TmpEle) then
      

  4.   

    ixmlDomNode是微软定义的xml接口,可以转换成任意类型-_-!