unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XMLIntf, XMLDoc, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
TestXML = '<?xml version="1.0" encoding="UTF-8"?>' +
'<SeasonStatistics>' +
'<Team>' +
'<Player last_name="Correia Filho" player_id="168805" shirtNumber="23" first_name="Roberto Dias" position="Defender" known_name="Roberto Dias">' + // rozsirene data
'<Stat name="Games Played">1</Stat>' + // zobrazi sa
'<Stat name="Blocks">2</Stat>' + // nezobrazi sa
'<Stat name="Leftside Passes">10</Stat>' + // nezobrazi sa
'</Player>' +
'<Player first_name="David" position="Midfielder" last_name="Cobnan" player_id="545262" shirtNumber="0" />' + // nie su rozsirene data, error: "could not convert variant of type (null) into type (string)"
'</Team>' +
'</SeasonStatistics>';
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Doc: IXMLDocument;
Root: IXMLNode;
PersonList: IXMLNodeList;
Person: IXMLNode;
i: Integer;
begin
Memo1.Clear;
Doc := LoadXMLData(TestXML);
Doc.Active := True;
Root := Doc.DocumentElement;
PersonList := Root.ChildNodes['Team'].ChildNodes;
Person := PersonList.First;
while Assigned(Person) do
begin
// Memo1.Lines.Add(Person.ChildNodes['Stat name="Blocks"'].Text); // error...
Memo1.Lines.Add(Person.ChildValues['Stat']); // iba jeden zaznam z nodu stat... [1] !!!
Person:= Person.NextSibling;
end;
end;