如何从xml文件读取数据并以delphi语言显示在文本框中 [英] How to read data from xml file and display it over the text box in delphi language
问题描述
看起来像这样
< 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屋!