声明IXMLNode变量。给段代码给你参考下。
Myxml := TXMLDocument.Create(nil);
      Myxml.LoadFromFile(sFilePath);
      Myxml.Active := True;
      Root := Myxml.DocumentElement;
      Next_Node := Root.ChildNodes.First;
      while Next_Node <> nil do
      begin
        if Next_Node.LocalName = 'ParaCode' then
        begin
          Rec_Nod := Next_Node.ChildNodes.First;
          while Rec_Nod <> nil do
          begin
            if Rec_Nod.LocalName = 'Rec' then
            begin
              Field_Node := Rec_Nod.ChildNodes.First;
              New(p);
              while Field_Node <> nil do
              begin
                if LowerCase(Field_Node.Attributes['code']) = LowerCase('CardID') then
                begin
                  p.CardID := Trim(Field_Node.Text);
                end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('cardType') then
                begin
                  p.icklx := StrToInt(Field_Node.Text);
                end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('blackType') then
                begin
                  p.blackType := StrToInt(Field_Node.Text);
                end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('occurTime') then
                begin
                  p.occurTime := StrToDateTimeDef(Field_Node.Text, Now);
                end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('ExpireTime') then
                begin
                  p.ExpireTime := StrToDateTimeDef(Field_Node.Text, Now);
                end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('validFlag') then
                begin
                  p.validFlag := StrToIntDef(Field_Node.Text, 0);
                end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('RegisterOrgId') then
                begin
                  p.RegisterOrgId := StrToIntDef(Field_Node.Text, 0);
                end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('registerOperatorId') then
                begin
                  p.registerOperatorId := StrToIntDef(Field_Node.Text, 0);
                end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('spare1') then
                begin
                  p.spare1 := StrToIntDef(Field_Node.Text, 0);
                end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('spare2') then
                begin
                  p.spare2 := Field_Node.Text;
                end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('res') then
                begin
                  p.res := Field_Node.Text;
                end else if LowerCase(Field_Node.Attributes['code']) = LowerCase('version') then
                begin
                  p.version := Field_Node.Text;
                  if p.version>g_ETC_para_ver.blackcard_version then g_ETC_para_ver.blackcard_version:=p.version;
                end;
                Field_Node := Field_Node.NextSibling;
              end;
              TmpList.Add(p);
            end;
            Rec_Nod := Rec_Nod.NextSibling;
          end;
        end;
        Next_Node := Next_Node.NextSibling;
      end;

解决方案 »

  1.   

    注意变量的声明。是IXMLDocument,不是TXMLDocument。
      Myxml: IXMLDocument;
      Root: IXMLNode; //指向XML根结点
      Next_Node: IXMLNode; //指向数据包ID结点
      

  2.   

    你这个也只是取到node的text我是要取属性的值
      

  3.   

    能不能把你的XML也贴出来看下
      

  4.   

    <?xml version="1.0" encoding="GBK"?>
    <Root>
    <ParaCode>2004</ParaCode>
    <ParaCount>2920</ParaCount>
    <Items>
    <Rec sn="1">
    <Field code="CardID">0000000000007777</Field>
    <Field code="cardType">26</Field>
    <Field code="blackType">2</Field>
    <Field code="occurTime">2012-07-03 10:19:30</Field>
    <Field code="ExpireTime">2112-07-03 10:19:30</Field>
    <Field code="validFlag">1</Field>
    <Field code="RegisterOrgId">1</Field>
    <Field code="registerOperatorId">0</Field>
    <Field code="spare1">0</Field>
    <Field code="spare2">0</Field>
    <Field code="res">0</Field>
    <Field code="version">20120703103111</Field>
    </Rec>
    <Rec sn="2">
    <Field code="CardID">0001000000000000</Field>
    <Field code="cardType">23</Field>
    <Field code="blackType">3</Field>
    <Field code="occurTime">2011-08-03 17:32:16</Field>
    <Field code="ExpireTime">2111-08-03 17:32:16</Field>
    <Field code="validFlag">1</Field>
    <Field code="RegisterOrgId">1</Field>
    <Field code="registerOperatorId">1</Field>
    <Field code="spare1">0</Field>
    <Field code="spare2">0</Field>
    <Field code="res">[入口流水校验]设备在2011-08-03 17:32:16被设为伪卡</Field>
    <Field code="version">20110803173216</Field>
    </Rec>
    <Rec sn="3">
    <Field code="CardID">0322002812151155</Field>
    <Field code="cardType">22</Field>
    <Field code="blackType">3</Field>
    <Field code="occurTime">2010-04-14 9:07:30</Field>
    <Field code="ExpireTime">2110-04-21</Field>
    <Field code="validFlag">1</Field>
    <Field code="RegisterOrgId">1</Field>
    <Field code="registerOperatorId">1</Field>
    <Field code="spare1">0</Field>
    <Field code="spare2">0</Field>
    <Field code="res">0</Field>
    <Field code="version">20100421180000</Field>
    </Rec>
    <Rec sn="4">
    <Field code="CardID">0322003076195443</Field>
    <Field code="cardType">22</Field>
    <Field code="blackType">3</Field>
    <Field code="occurTime">2010-07-30 17:06:00</Field>
    <Field code="ExpireTime">2110-07-30 17:06:00</Field>
    <Field code="validFlag">1</Field>
    <Field code="RegisterOrgId">1</Field>
    <Field code="registerOperatorId">1</Field>
    <Field code="spare1">0</Field>
    <Field code="spare2">0</Field>
    <Field code="res">[出口流水校验]设备在2010-07-30 17:06:00被设为伪卡</Field>
    <Field code="version">20100730170600</Field>
    </Rec>
    </Items>
    </Root>