加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何从xml文件读取数据,并以delphi语言显示在文本框中

发布时间:2020-12-16 23:36:36 所属栏目:百科 来源:网络整理
导读:我是delphi语言的新手,在这里我有一个疑问,我有一个名为vehicle.xml的xml文件. 看起来像这样 datavehicle typeCar/type model2005/model number1568/number/vehiclevehicle typeCar/type model2009/model number1598/number/vehicle/data 我的Delphi窗体包含
我是delphi语言的新手,在这里我有一个疑问,我有一个名为vehicle.xml的xml文件.

看起来像这样

<data>
<vehicle>
    <type>Car</type>
    <model>2005</model>
    <number>1568</number>
</vehicle>
<vehicle>
    <type>Car</type>
    <model>2009</model>
    <number>1598</number>
</vehicle>
</data>

我的Delphi窗体包含三个文本框:

> txtType
> txtModel
> txtnumber

在加载页面时,我想在文本框中显示vehicle.xml的内容,如:

> txtType = Car
> txtModel = 2005
> txtNumber =“1568”

解决方法

看看Delphi自己的TXMLDocument组件,例如:

procedure TForm1.FormCreate(Sender: TObject);
var
  Vehicle: IXMLNode;
begin
  XMLDocument1.FileName :='vehicle.xml';
  XMLDocument1.Active := True;
  try
    Vehicle := XMLDocument.DocumentElement;
    txtType.Text := Vehicle.ChildNodes['type'].Text;
    txtModel.Text := Vehicle.ChildNodes['model'].Text;
    txtnumber.Text  := Vehicle.ChildNodes['number'].Text;
  finally
    XMLDocument1.Active := False;
  end;
end;

或者,直接使用IXMLDocument接口(TXMLDocument包装):

procedure TForm1.FormCreate(Sender: TObject);
var
  Doc: IXMLDocument;
  Vehicle: IXMLNode;
begin
  Doc := LoadXMLDocument('vehicle.xml');
  Vehicle := Doc.DocumentElement;
  txtType.Text := Vehicle.ChildNodes['type'].Text;
  txtModel.Text := Vehicle.ChildNodes['model'].Text;
  txtnumber.Text := Vehicle.ChildNodes['number'].Text;
end;

更新:问题中的XML已被更改,现在将车辆元素包裹在数据元素内,并具有多个车辆元素.所以上面的代码必须相应调整,例如:

procedure TForm1.FormCreate(Sender: TObject);
var
  Doc: IXMLDocument;
  Data: IXMLNode;
  Node: IXMLNode;
  I: Integer;
begin
  Doc := LoadXMLDocument('vehicle.xml');
  Data := Doc.DocumentElement;
  for I := 0 to Data.ChildNodes.Count-1 do
  begin
    Node := Data.ChildNodes[I];
    // if all of the child nodes will always be 'vehicle' only
    // then this check can be removed...
    if Node.LocalName = 'vehicle' then
    begin
      // use Node.ChildNodes['type'],Node.ChildNodes['model'],// and Node.ChildNodes['number'] as needed...
    end;
  end;
end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读