如何从xml文件读取数据并以delphi语言显示在文本框中 [英] How to read data from xml file and display it over the text box in delphi language

查看:190
本文介绍了如何从xml文件读取数据并以delphi语言显示在文本框中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很熟悉delphi语言,这里我有一个疑问,我有一个名为vehicle.xml的xml文件。



看起来像这样

 < data> 
<车辆>
< type> Car< / type>
< model> 2005< / model>
< number> 1568< / number>
< / 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
车辆:IXMLNode;
begin
XMLDocument1.FileName:='vehicle.xml';
XMLDocument1.Active:= True;
try
车辆:= XMLDocument.DocumentElement;
txtType.Text:= Vehicle.ChildNodes ['type']。Text;
txtModel.Text:= Vehicle.ChildNodes ['model']。Text;
txtnumber.Text:= Vehicle.ChildNodes ['number']。Text;
finally
XMLDocument1.Active:= False;
结束
结束

或者直接使用 IXMLDocument 其中 TXMLDocument wrap):

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






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

  procedure TForm1.FormCreate(Sender:TObject); 
var
Doc:IXMLDocument;
数据:IXMLNode;
节点:IXMLNode;
I:整数;
begin
Doc:= LoadXMLDocument('vehicle.xml');
数据:= Doc.DocumentElement;
for I:= 0 to Data.ChildNodes.Count-1 do
begin
Node:= Data.ChildNodes [I];
//如果所有的子节点总是'车辆'只有
//那么这个检查可以被删除...
如果Node.LocalName ='车辆'然后
begin
//根据需要使用Node.ChildNodes ['type'],Node.ChildNodes ['model'],
//和Node.ChildNodes ['number'] ...
结束
结束
结束


I am new to the delphi language, and here I have a doubt, I have a xml file called vehicle.xml.

It looks like this

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

My Delphi form contains three text boxes:

  • txtType
  • txtModel
  • txtnumber

While loading the page I want to display the contents of the vehicle.xml over the text box like:

  • txtType=Car
  • txtModel=2005
  • txtNumber="1568"

解决方案

Have a look at Delphi's own TXMLDocument component, for example:

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;

Alternatively, use the IXMLDocument interface directly (which TXMLDocument wraps):

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;


Update: the XML in the question has been altered to now wrap the vehicle element inside of a data element, and to have multiple vehicle elements. So the code above has to be adjusted accordingly, eg:

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;

这篇关于如何从xml文件读取数据并以delphi语言显示在文本框中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆