Delphi-Quellcode:
procedure TForm1.UpdateFromXML(const data: string; dataIsFile:Boolean);
var
document : IXMLDOMDocument2;
node, node2 : IXMLDOMNode;
ElementCube : IXMLDOMElement;
i : Integer;
currency : string;
rate : Double;
begin
document := CoDOMDocument40.Create;
if dataIsFile then
document.load(data)
else
document.loadXML(data);
// CheckDocumentError(document);
node2 := document.documentElement;
node := node2.lastChild;
// node := document.documentElement.selectSingleNode('//Cube');
node := node.firstChild;
// Schleife über alle vorhandenen Währungen
for i := 0 to node.childNodes.length-1 do
begin
ElementCube := node.childnodes.item[i] as IXMLDOMElement;
currency := ElementCube.getAttribute('currency');
rate := ElementCube.getAttribute('rate');
UpdateCurrency(currency, rate);
end;
end;
Dies ist ja dein Code, data muss also der Dateipfad+Name sein. Also praktisch Ordner/dateiname.xml
So, ich hab das auch mal gemacht. Bei mir kommt allerdings eine Zugriffsverletzung:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
node:IXMLDOMNode;
Element:IXMLDOMELEMENT;
begin
XMLDokument:=CoDOMDocument40.Create;
XMLDokument.loadXML('datafiles/euroxref-hist.xml');
node := XMLdokument.documentElement.selectSingleNode('//Cube');
Element:=node.childnodes.item[1] as IXMLDOMElement;
end;
variable i ist für spätere Schleife(n)...
Wenn ich dann auf besagten Button klicke, wird die 3. Zeile nach Begin (node := ...) markiert und die Zugriffsverletzungsnachricht
Modul 00442242 Adresse 00000000
erscheint. Ich seh den Unterschied nicht genau... Ok, habe andere Bezeichnungen aber sonst müsste alles gleich sein, oder?
Habe das Tutorial
hier mal gelesen, aber ist ja etwas anders aufgebaut, also hab ich da so meine Probleme mit. Ich kann auch nicht dort kopieren, was dort steht, weil mir wieder mal zwei .pas Dateien fehlen...