delphi 解析xml,请高手帮助(100)

  • 主题发起人 主题发起人 roundlight
  • 开始时间 开始时间
R

roundlight

Unregistered / Unconfirmed
GUEST, unregistred user!
现在遇到了 delphi 解析xml文件的问题,由于好久没有使用delphi了, 请大家给与指点;不胜感谢阿;
 
<?xml version="1.0" encoding="gb2312"?><SMSOpenResponse ID="OPENSUB2009080401350107" ReturnCode="0" SubCode="100001451000000006" AccountCode="100452238" CustomerCode="pingyang10000004" ReturnMessage="处理成功!"/>我想要提取出 结果来, 比如 ID 为 OPENSUB2009080401350107 , ReturnCode 为 0,SubCode 为 100001451000000006 AccountCode 为 100452238 CustomerCode 为 pingyang10000004 ReturnMessage 为 处理成功! 等, 我想把结果直接提取出来, 有没有比较好的方法, 请各位帮忙看一下;
 
xml控件带有自动获取节点的方法,你看一下,很简单的
 
to: 火焰领主打伞,能不能帮忙写个例子阿, 实在是精力有限,不能够花更多时间去研究这个问题了, 还是请高手们指点指点吧;
 
遍历所有节点http://www.delphibbs.com/delphibbs/dispq.asp?lid=3958083
 
uses xmldom, XMLIntf, msxmldom, XMLDoc;var XMLDoc: IXMLDocument; ItemNode: IXMLNode;begin XMLDoc := TXMLDocument.Create(nil); try XMLDoc.LoadFromXML(sXML);//加载你的XML信息或者LoadFromFile; ItemNode := XMLDoc.DocumentElement; //读取属性值 id := ItemNode.Attributes['ID']; ReturnCode := ItemNode.Attributes['ReturnCode']; // 同样的方法 ..... finally xmldoc := nil; end;end;
 
TO: happycyp感谢上面的兄弟,你的这个方法对我提醒很大,我花了一天的时间自己写的提取数据值的方法, 感觉还不如你给我的这个好用;对于返回简单的XML来说是可以处理,但是对于下面的负责的XML格式, 你给我的这个函数处理不了啊, 请问是否有好的办法,帮我解析一下下面的这个XML的返回值;不胜感谢阿, 先感谢 happycyp 兄弟的 做法, 无论如何都要给你加分的;<?xml version="1.0" encoding="gb2312"?><QueryDrInfoResponse ID="QueryDrInfo2006010100000001" ReturnCode="0" ReturnMessage="查询成功"><DrInfo FilmName="神医侠侣[13] " BeginTime="20080318 161359" EndTime="20080318 170532" Amount="0"/><DrInfo FilmName="憨豆先生的黄金周" BeginTime="20080321 122339" EndTime="20080321 131135" Amount="500"/></QueryDrInfoRequest>
 
对于上面的XML,我只能够解析 <QueryDrInfoResponse ID="QueryDrInfo2006010100000001" ReturnCode="0" ReturnMessage="查询成功">中的字段对应的值, <DrInfo FilmName="神医侠侣[13] " BeginTime="20080318 161359" EndTime="20080318 170532" Amount="0"/> 里面的值不能够解析,请朋友们帮忙想想办法,比较着急的问题;
 
我一直都会跟这个帖子的,如果大家有什么好的办法,直接在上面留言给我,我会认真阅读,并感谢大家的积极参与;
 
<?xml version="1.0" encoding="gb2312"?><QueryDrInfoResponse ID="QueryDrInfo2006010100000001" ReturnCode="0" ReturnMessage="查询成功"><DrInfo FilmName="神医侠侣[13] " BeginTime="20080318 161359" EndTime="20080318 170532" Amount="0"/><DrInfo FilmName="憨豆先生的黄金周" BeginTime="20080321 122339" EndTime="20080321 131135" Amount="500"/></QueryDrInfoRequest>你这个XML写得不对吧。最后一行应该是</QueryDrInfoResponse>处理方法:var XMLDoc: IXMLDocument; ItemNode, ChildNode: IXMLNode;begin XMLDoc := TXMLDocument.Create(nil); try XMLDoc.LoadFromXML(sXML);//加载你的XML信息或者LoadFromFile; ItemNode := XMLDoc.DocumentElement; if ItemNode.NodeName = 'QueryDrInfoResponse' then begin id := ItemNode.Attributes['ID']; ReturnCode := ItemNode.Attributes['ReturnCode']; // 同样的方法 ..... if ItemNode.HasChildNodes then begin for I := 0 to ItemNode.ChildNodes.Count - 1 do begin ChildNode := ItemNode.ChildNodes.Nodes; if ChildNode.NodeName = 'DrInfo' then begin FilmName := ChildNode.Attributes['FilmName']; ...... end; end; end; end; finally XMLDoc := nil; end;end;
 
To:happycyp ,万分感谢! 幸好遇到你了, 不然的话,我还要自己写算法;由于之前用 Delphi 处理XML的方法不是特别熟悉,所以才来求助;请问 happycyp朋友是目前在哪里? 如果有兴趣,我们可以交个朋友; 我目前在北京,基本上做管理工作,只是这个项目很急,所以我也参与进来了,希望能够认识你;分数一定送上;
 
多谢上面几位朋友的参与, 这里再次感谢 !
 
TO:happycyp遇到了新的问题,即 编辑XML格式文档的节点,并根据节点的字段写入具体的值,希望happycyp 给出帮助,谢谢;具体的描述,如下地址所述,希望给出具体的实现细节,不胜感谢!http://www.delphibbs.com/delphibbs/dispq.asp?lid=3971820
 
后退
顶部