例如,可以看一下 Delphi 自带的 TXMLDocument
组件:
uses
..., XMLIntf, XMLDoc;
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;
或者直接使用 TXMLDocument
实现的 IXMLDocument
接口:
uses
..., XMLIntf, XMLDoc;
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已经被修改,现在将vehicle
元素包裹在一个data
元素中,并且有多个vehicle
元素。因此,上面的代码必须相应地进行调整,例如:
uses
..., XMLIntf, XMLDoc;
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 Node.LocalName = 'vehicle' then
begin
end;
end;
end;
<vehicle>
元素。现在XML的结构已经改变,因此代码需要相应地进行调整。我已经更新了我的答案。 - Remy LebeauTXMLDocument
拖放到窗体中,uses
子句就会自动填充,就像其他任何组件一样。但无论如何,我已经更新了我的答案。 - Remy Lebeau