如下的一个xml文件,我需要读取 <ROWDATA>里的数据(项目名、参考值、结果等)该怎么做?第一次接触xml,望说的详细点<?xml version="1.0" encoding="GB2312" standalone="yes" ?> 
- <DATAPACKET Version="2.0">
- <METADATA>
- <FIELDS>
  <FIELD attrname="TJBH" fieldtype="string" WIDTH="50" /> 
  <FIELD attrname="SAMPLENO" fieldtype="string" WIDTH="10" /> 
  <FIELD attrname="SAMPLEID" fieldtype="i4" /> 
  <FIELD attrname="病人ID" fieldtype="string" WIDTH="40" /> 
  <FIELD attrname="XM" fieldtype="string" WIDTH="26" /> 
  <FIELD attrname="XB" fieldtype="string" WIDTH="20" /> 
  <FIELD attrname="NL" fieldtype="string" WIDTH="42" /> 
  <FIELD attrname="XMBH" fieldtype="string" WIDTH="10" /> 
  <FIELD attrname="XMMC" fieldtype="string" WIDTH="50" /> 
  <FIELD attrname="XMJG" fieldtype="string" WIDTH="20" /> 
  <FIELD attrname="CKFW" fieldtype="string" WIDTH="41" /> 
  <FIELD attrname="参考上" fieldtype="string" WIDTH="20" /> 
  <FIELD attrname="参考下" fieldtype="string" WIDTH="20" /> 
  <FIELD attrname="单位" fieldtype="string" WIDTH="10" /> 
  <FIELD attrname="GDBJ" fieldtype="string" WIDTH="10" /> 
  <FIELD attrname="JYYS" fieldtype="string" WIDTH="10" /> 
  <FIELD attrname="SHYS" fieldtype="string" WIDTH="10" /> 
  <FIELD attrname="SHRQ" fieldtype="dateTime" /> 
  <FIELD attrname="就诊类别" fieldtype="i4" /> 
  <FIELD attrname="检验时间" fieldtype="dateTime" /> 
  <FIELD attrname="实验项目码" fieldtype="string" WIDTH="10" /> 
  <FIELD attrname="实验项目" fieldtype="string" WIDTH="100" /> 
  </FIELDS>
  <PARAMS /> 
  </METADATA>
- <ROWDATA>
  <ROW TJBH="JY0000000003" SAMPLENO="3" SAMPLEID="3" 病人ID="JY0000000003" XM="tj01" XB="男" NL="未知" XMBH="3060" XMMC="乙肝表面抗原" XMJG="阴性" JYYS="admin" SHYS="admin" SHRQ="20081016T00:00:00000" 就诊类别="5" 检验时间="20081016T00:00:00000" 实验项目码="10956" 实验项目="ABO血型鉴定" /> 
  <ROW TJBH="JY0000000003" SAMPLENO="3" SAMPLEID="3" 病人ID="JY0000000003" XM="tj01" XB="男" NL="未知" XMBH="3160" XMMC="乙肝表面抗体" XMJG="阴性" JYYS="admin" SHYS="admin" SHRQ="20081016T00:00:00000" 就诊类别="5" 检验时间="20081016T00:00:00000" 实验项目码="10956" 实验项目="ABO血型鉴定" /> 
  <ROW TJBH="JY0000000003" SAMPLENO="3" SAMPLEID="3" 病人ID="JY0000000003" XM="tj01" XB="男" NL="未知" XMBH="3061" XMMC="乙肝e抗原" XMJG="阴性" JYYS="admin" SHYS="admin" SHRQ="20081016T00:00:00000" 就诊类别="5" 检验时间="20081016T00:00:00000" 实验项目码="10956" 实验项目="ABO血型鉴定" /> 
  <ROW TJBH="JY0000000003" SAMPLENO="3" SAMPLEID="3" 病人ID="JY0000000003" XM="tj01" XB="男" NL="未知" XMBH="3063" XMMC="乙肝e抗体" XMJG="阴性" JYYS="admin" SHYS="admin" SHRQ="20081016T00:00:00000" 就诊类别="5" 检验时间="20081016T00:00:00000" 实验项目码="10956" 实验项目="ABO血型鉴定" /> 
  <ROW TJBH="JY0000000003" SAMPLENO="3" SAMPLEID="3" 病人ID="JY0000000003" XM="tj01" XB="男" NL="未知" XMBH="3062" XMMC="乙肝核心抗体" XMJG="阴性" JYYS="admin" SHYS="admin" SHRQ="20081016T00:00:00000" 就诊类别="5" 检验时间="20081016T00:00:00000" 实验项目码="10956" 实验项目="ABO血型鉴定" /> 
  <ROW TJBH="JY0000000003" SAMPLENO="3" SAMPLEID="3" 病人ID="JY0000000003" XM="tj01" XB="男" NL="未知" XMBH="3005" XMMC="乙肝核心抗体IGM" XMJG="阴性" JYYS="admin" SHYS="admin" SHRQ="20081016T00:00:00000" 就诊类别="5" 检验时间="20081016T00:00:00000" 实验项目码="10956" 实验项目="ABO血型鉴定" /> 
  </ROWDATA>
  </DATAPACKET>

解决方案 »

  1.   


    var
      Doc: TXMLDocument;
      SubNode, CurNode, Node: IXMLNode;
      I: Integer;
    begin
      Doc := TXMLDocument.Create(nil);
      Doc.Active := False;
      Doc.LoadFromXML('上面你的XML内容');
      Doc.Active := True;  Node := Doc.DocumentElement;
      CurNode := Node.ChildNodes.FindNode('ROWDATA');
      if CurNode <> nil then Exit;  for I := 0 to CurNode.ChildNodes.Count - 1 do
      begin
        SubNode := CurNode.ChildNodes.Nodes[I];
        项目名称 := SubNode.Attributes['XMMC'];
        //.........
      end;
    end;
      

  2.   

    谢谢,基本可用,另外问一下,我要得到这个xml文件需要访问下面的地址
    http://192.168.10.10/lis/XMLSelect.ashx?SQL=select * from vi_jyjg t where t.Tjbh='体检编号'该用什么控件好一些,直接读取,还是另存一个文件出来?
      

  3.   

    uses 
      comobj;
    function GetData(url:string): string;
    var
      responseText: WideString;
      xmlHttp: oleVariant;
    begin
      Result:='';
      try
        xmlHttp:=CreateOleObject('Msxml2.XMLHTTP');
        xmlHttp.open('GET',url,false);
        xmlHttp.send();
        responseText:=xmlHttp.responseText;
        if xmlHttp.status='200' then
        begin
          Result:=responseText;
        end;
        xmlHttp := Unassigned;
      except
        Result:='';
      end;
    end;--调用
    GetData('http://192.168.10.10/lis/XMLSelect.ashx?SQL=select * from vi_jyjg t where t.Tjbh=''体检编号''');
      

  4.   

    function GetData(url:string): string;
    var
      responseText: WideString;
      xmlHttp: oleVariant;
    begin
      Result:='';
      try
        xmlHttp:=CreateOleObject('Msxml2.XMLHTTP');
        xmlHttp.open('GET',url,false);
        xmlHttp.send();
        responseText:=xmlHttp.responseText;
        if xmlHttp.status='200' then
        begin
          Result:=responseText;
        end;
        xmlHttp := Unassigned;
      except
        Result:='';
      end;
    end;