• Delphi XE XML信息的读取


    <?xml version="1.0" encoding="utf-8"?>
    
    <ConString> 
      <Item> 
        <Name/>  
        <Type>C</Type>  
        <Value> 
          <Option>3301</Option> 
        </Value> 
      </Item>  
      <Item> 
        <Name/>  
        <Type>C</Type>  
        <Value> 
          <Option>20200307001</Option> 
        </Value> 
      </Item>  
      <Item> 
        <Name/>  
        <Type>C</Type>  
        <Value> 
          <Option>20200307</Option> 
        </Value> 
      </Item>  
      <Item> 
        <Name/>  
        <Type>C</Type>  
        <Value> 
          <Option>201</Option> 
        </Value> 
      </Item>  
      <Item> 
        <Name/>  
        <Type>C</Type>  
        <Value> 
          <Option>110100970</Option>  
          <Option>110100970</Option> 
        </Value> 
      </Item>  
      <Item> 
        <Name/>  
        <Type>C</Type>  
        <Value> 
          <Option>后门上车踏板L</Option>  
          <Option>后门上车踏板L</Option> 
        </Value> 
      </Item>  
      <Item> 
        <Name/>  
        <Type>C</Type>  
        <Value> 
          <Option>CW733538</Option>  
          <Option>CW733538</Option> 
        </Value> 
      </Item>  
      <Item> 
        <Name/>  
        <Type>N</Type>  
        <Value> 
          <Option>100</Option>  
          <Option>200</Option> 
        </Value> 
      </Item>  
      <Item> 
        <Name/>  
        <Type>N</Type>  
        <Value> 
          <Option>0</Option>  
          <Option>0</Option> 
        </Value> 
      </Item> 
    </ConString>

    以上为XML信息,如何读取Option后的内容呢?

    procedure TMainForm.ReadXml(Node: IXMLNode; var Params: string);
    var
      NodeList: IXMLNodeList;
      strName: string;
      i: Integer;
    begin
      if not Node.HasChildNodes then
        Exit;
      NodeList := Node.ChildNodes;
      for i := 0 to NodeList.Count - 1 do
      begin
        strName := NodeList[i].NodeName;
        if NodeList[i].IsTextElement then //如果是元素
        begin
          if NodeList[i].NodeName = 'Option' then
            Params := Params + NodeList[i].NodeValue + #13#10;
        end
        else if NodeList[i].HasChildNodes then //如果有子节点
        begin
          ReadXml(NodeList[i], Params);
        end;
      end;
    end;
    procedure TMainForm.btn4Click(Sender: TObject);
    var
      node: IXMLNode;
      ParamsStr: string;
    var
      LDocument: IXMLDocument;
    var
      Paramslist: TStringList;
    begin
      LDocument := TXMLDocument.Create(nil);
      LDocument.LoadFromXML(mmoxml.Text);
      node := LDocument.DocumentElement;
    
      ReadXml(node, ParamsStr);
      Paramslist := TStringList.Create;
      try
        Paramslist.Text := ParamsStr;   //把数据传成数组
        ShowMessage(Paramslist.Text);
      finally
        Paramslist.Free;
      end;
    end;

    最后,看一下运行结果:

  • 相关阅读:
    .Net里的Attribute 学习
    浅谈并发与并行(一)
    Asp.net Mvc4默认权限详细(下)
    Enum是如何用的?
    指针与引用
    栈与队列
    mini2440裸机之I2C
    解决Delphi MDI 闪烁问题(使用WM_SETREDRAW锁屏后进行处理)
    DelphiXE 显示GIF动画
    参数传递方法(Delphi1.0与win16API使用pascal方法,即从左到右)
  • 原文地址:https://www.cnblogs.com/redhat588/p/12460244.html
Copyright © 2020-2023  润新知