读新浪的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;
提示: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;
自己替换一下看看
'&',
'&;'),
'<',
'<'),
'>',
' >'),
'"',
'"'),
' ',
' '),
'''',
''');