XML内容如下
<?xml version="1.0" encoding="GBK"?>
 <DataPacket Version="1.0">
 <Data Name="returnMessage"><![CDATA[<><><>连接开票软件失败。]]></Data>
 </DataPacket>请问用DELPHI6有能解析出ReturnMessage中的数据吗?Delphi6进入循环里面就报地址错误,各位大神帮指点下 procedure TForm1.btn1Click(Sender: TObject);
var
   xmlDuc: IxmlDocument;
   root: IXMLNode;
   i: integer;
   sName, sValue: string;
begin
  try
    xmlDuc := LoadXMLDocument('d:\a.xml');
    xmlDuc.Active := true;
    root := xmlDuc.DocumentElement;
    ShowMessage(IntToStr(root.ChildNodes.Count));
    for i := 0 to root.ChildNodes.count - 1 do
    begin
      if not root.ChildNodes[i].HasAttribute('Name') then continue;
      sName :=  root.ChildNodes[i].Attributes['Name'];
      sValue := root.ChildNodes[i].NodeValue;
    end;
    ShowMessage(sName+sValue);
  except
  end;
end;

解决方案 »

  1.   

    结构化MXL:
    <?xml version="1.0"?>
    <DataPacket Version="1.0">
      <Data Name="returnMessage">
        <![CDATA[<><><>连接开票软件失败。]]>
      </Data>
    </DataPacket>结构分析:
    根节点:DataPacket,根节点仅一个子节点,
    子节点Data,数据为空(无节点)。
    <Data Name="returnMessage">是根结点的属性值。
    <![CDATA[<><><>连接开票软件失败。]]>也是根结点的属性值,但它是注释句。
    <![CDATA [...]]>二进制数据;其中"<><><>连接开票软件失败"是注释名中的属性值。
      

  2.   

    CDATA数据可以直接取,没有问题的。
      

  3.   

    XML格式非法。

    <![CDATA[<><><>连接开票软件失败。]]> 
    ——
    这字串里的尖括号都去掉