首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

XMLDocumnet怎么读取XML里的属性值

2013-06-26 
XMLDocumnet如何读取XML里的属性值有一段XML报文:?xml version1.0 encodingUTF-8?Values version

XMLDocumnet如何读取XML里的属性值

有一段XML报文:
<?xml version="1.0" encoding="UTF-8"?>
<Values version="2.0">
  <array name="resultDocumentList" type="record" depth="1">
<record javaclass="com.wm.util.Values">
      <value name="agencyNo "> HXDL-00001</value>
      <value name="lowerValue">PC0200C000000001</value>
      <value name="upperValue">PC0200C000000100</value>
</record>
</array>
</Values>
想读取红色字休的值,用XMLDocumnet控件怎么来读取,我测试了一整天都没能读出来,有没有哪位大虾有写过类似的代码,请指点迷津,万分感谢!
[解决办法]
声明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('remarks') then
                begin


                  p.remarks := 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;

热点排行