<?xml version="1.0" encoding="utf-8" ?> 
<rsp>
  <totalResults>67169</totalResults> 
 <trade>
<price>
<![CDATA[ 96.04]]> 
  </price>
  <num>1</num> 
<tid>
<![CDATA[ 40332657413672]]> 
  </tid>
 <sid><![CDATA[ 40332657413672]]> </sid>
<status><![CDATA[ WAIT_BUYER_PAY]]> </status>
<orders list="true">
<order>
   <iid><![CDATA[ 012a230178fb8fc38195d5e3b455525b]]> </iid>
  </order>
  </orders>
<receiver_name><![CDATA[ 张平]]> </receiver_name>
<receiver_state><![CDATA[ 广东省]]> </receiver_state>
<receiver_city><![CDATA[ 深圳市]]> </receiver_city>
<receiver_district><![CDATA[ 龙岗区]]> </receiver_district>
<receiver_address>
<![CDATA[ 深圳市龙岗区布吉街道布澜路赛兔科技园1栋3楼(深圳市格莱特科技有限公司) ]]> 
  </receiver_address>
<receiver_zip><![CDATA[ 518000]]> </receiver_zip>
<receiver_mobile><![CDATA[ 13823570126]]> </receiver_mobile>
<receiver_phone><![CDATA[ 0755-33859279]]> </receiver_phone>
  </trade>



</rsp>
如何用delphi提取这段xml各节点的值,请各位大哥帮忙解析一下!!!

解决方案 »

  1.   

    xmldocument组件,xmldocument的属性根据名字你就能看明白是干嘛的,节点就是node属性
      

  2.   

    就用MSXML组件解析,使用方法搜一下以前帖子,有很多
      

  3.   

    MSXML 示例procedure TReportDM.GetDataTypeByName(ASourceName: string;
      var AStrings: TStrings);
    var
      AFileName,dsName,AValue: string;
      XMLDoc: IXMLDOMDocument2;
      List: IXMLDOMNodeList;
      i: integer;
    begin
      AFileName := ExtractFilePath(Application.ExeName)+ReportInfoXMlName;
      XMLDoc := CoDOMDocument40.Create;
      XMLDoc.Load(AFileName);
      List := XMLDoc.selectNodes(Format(Property_Detail_SourcePath,[ASourceName]));
      for i := 0 to List.Length -1 do
      begin
        dsName := VarToStr((List[i] as IXMLDomElement).getAttribute('name'));
        AValue := dsName+'='+(List[i] as IXMLDomElement).getAttribute('value');
    //    if not SameText(dsName,'dataRange') then
        AStrings.Add(AValue);
      end;
    end;
      

  4.   

    的确是你所说的问题但是我改了label的宽度也不行不过真的要谢谢你!
      

  5.   

    xmldocument组件,xmldocument的属性根据名字你就能看明白是干嘛的,节点就是node属性