Ich habe es hingekriegt, das ich verschachtelte XML-Dateien auslesen kann.
Nur die Wurzelnode finde ich nicht, in meinem Fall <svg>
Der erste Eintrag, der gefunden wird, ist <title>.
Hat jemand eine Idee ?
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
const
path = 'test.xml';
var
doc: TXMLDocument;
nodeList: TDOMNodeList;
procedure Node(n: TDOMNodeList; schachtel: integer);
var
i: integer;
begin
for i := 0 to n.Count - 1 do begin
Memo1.Lines.Add(StringOfChar(' ', schachtel * 4) + n.Item[i].NodeName);
Node(n.Item[i].ChildNodes, schachtel + 1);
end;
end;
begin
Memo1.Clear;
ReadXMLFile(doc, path);
nodeList := doc.DocumentElement.ChildNodes; // Ich vermute, es liegt hier ?
Node(nodeList, 0);
doc.Free;
end;
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="800.000" height="600.000" viewBox="0.0 0.0 800.000 600.000" version="1.1">
<title>Produce by Acme CAD Converter</title>
<desc>Produce by Acme CAD Converter</desc>
<test1>
<xmltest a="1" b="2" c="3"/>
<xmltest>bla bla</xmltest>
<xmltest>bla bla</xmltest>
xmltest1
xmltest2
</test1>
<test2 s="mein Test">
<xmltest>bla bla</xmltest>
<xmltest>
bla bla
<br>
hi hi
</br>
<xmltest>bla bla</xmltest>
<xmltest>bla bla</xmltest>
</xmltest>
</test2>
<polyline points="201.02,101.02 134.57,98.56" style="fill:none;stroke:black;stroke-width:0.5"/>
<polyline points="134.57,137.59 201.02,135.13" style="fill:none;stroke:black;stroke-width:0.5"/>
</svg>