delphi xml 解析

zcnzy 2017-12-25 12:10:56

iNodeCount := RootNode.ChildNodes.Count; //Msg个数
if iNodeCount = 0 then
begin
Result := False;
TempRis.Free;
CoUninitialize;
Exit;
end;
try
for i := 0 to iNodeCount - 1 do
begin
NodeF := RootNode.ChildNodes[i];
if NodeF.NodeName = 'Msg' then
begin
iiPos := Pos('CDATA[', strXmlTemp);
if iPos <> 0 then
begin
iiPos := Pos('<msg>', strXmlTemp);
strXmlTemp := Copy(strXmlTemp, iiPos, Length(strXmlTemp));
iiPos := Pos(']]>', strXmlTemp);
Delete(strXmlTemp, iiPos, Length(strXmlTemp));
WriteLog('第' + IntToStr(i) + '循环截取参数为' + strXmlTemp);
end;


<MsgInfo>
<Msg><![CDATA[……xml….]]></Msg>
<Msg><![CDATA[……xml….]]></Msg>
<Msg><![CDATA[……xml….]]></Msg>
</MsgInfo>


代码中我每次循环截取的都为第一个Msg中的数据,是不是代码有误,还是什么原因
...全文
424 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zcnzy 2017-12-26
  • 打赏
  • 举报
回复
问题解决 nodef.text直接取出了
  • 打赏
  • 举报
回复
写得真乱, 为什么不继续遍历ChildNodes呢?
smileryway 2017-12-25
  • 打赏
  • 举报
回复
楼上说的对。。。。
zcnzy 2017-12-25
  • 打赏
  • 举报
回复
引用 1 楼 kenlewis 的回复:
strXmlTemp 在哪儿赋的初值?每次取NodeF,你也没对这个值做重新赋值啊。
strXmlTemp的内容是

<MsgInfo>
      <Msg><![CDATA[<msg>........</msg>]]></Msg>
      <Msg><![CDATA[……xml….]]></Msg>
      <Msg><![CDATA[……xml….]]></Msg>
   </MsgInfo>
kenlewis 2017-12-25
  • 打赏
  • 举报
回复
strXmlTemp 在哪儿赋的初值?每次取NodeF,你也没对这个值做重新赋值啊。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧