读新浪的RSS文件时就出错了,比如这个:http://blog.sina.com.cn/myblog/index_rss.php?uid=1271819330
提示:CDATA 节未关闭。<description><![CDATA[<div><.
或者:
下列标记没有关闭: rss, channel, item, link。
Line: 0
可能是XML文件中有特殊字符,该怎么解决呀?
procedure Tmainform.getxmllist(treenode:TTreeNode;xmlurl:string);
var
  JobxmlDoc:IXMLDocument;
  Node,itemnode,channelNode,timenode:IXMLNode;
  str:string;
  title,pubDate,description:string;
begin
  Memo1.Lines.LoadFromFile('c:\a.xml');
  str:=Memo1.Lines.Text;
  CoInitialize(nil);
  JobxmlDoc := NewXMLDocument ;
  try
    JobxmlDoc.Version:='1.0';
    JobxmlDoc.Encoding:='utf-8';
    jobxmldoc.LoadFromXML(str);
      Node:=JobxmlDoc.ChildNodes.FindNode('rss');
      IF nODE =NIL THEN exit;
    channelNode:=nODE.ChildNodes.FindNode('channel');      timenode:=channelNode.ChildNodes.FindNode('pubDate');
      if timenode<>nil then
     setrsstime(xmlurl,datetimetostr(GMTToLocalDateTime(timenode.NodeValue)));    itemnODE:=channelNode.ChildNodes.FindNode('item');
  while itemnODE <>nil do
  begin
      Node:=itemnODE.ChildNodes.First;
      WHILE Node <>nil DO 
        BEGIN
        shOWMESSAGE(nODE.NodeValue); 
        nODE:=nODE.NextSibling;
      END;
       itemnODE:=itemnODE.NextSibling;
end;  finally
    JobxmlDoc:=nil;
    CoUninitialize();
  end;
end;

解决方案 »

  1.   

    我不知道特殊字符是哪个啊?我用ULTRAEDIT也没看出
      

  2.   

    这个字符串确定是utf-8的吗,我记得我以前用的时候CDATA不用特殊处理的,照读。
      

  3.   

    stringreplace()
    自己替换一下看看 
        '&',
                                                               '&amp;;'),
                                                       '<',
                                                       '&lt;'),
                                               '>',
                                               ' &gt;'),
                                       '"',
                                       '&quot;'),
                               ' ',
                               '&nbsp;'),
                       '''',
                       '&#39;');