Hallo,
nachdem ich mich in die Grundlagen von
XML etwas eingearbeitet habe(ein paar Daten ablegen statt in einem Ini in ein
XML und wieder auslesen), muss ich nun schon was komplexeres machen. Ich muss einen Export aus einem anderen Programm auswerten. Ursprünglich passierte das mittels eines VBS Makros das dann ewig lief. jetzt solls mit nem Extraprogramm und einem
XML-Export passieren das ich dann eben auswerten muss. Das
XML hat so um die 1600 Elemente wobei viele Nodes den gleichen Namen haben aber ID Elemente existieren über die man die einzelnen Nodes identifiezieren kann. Attribute existieren nicht.
Ach ja vieleicht wichtig: ich hab Delphi XE2 und nutze hier die
VCL und nicht FM.
Bin im Netzt auf viele Infos gestoßen, leider gibt es soviele Libs das ich damit nicht weitergekommen bin.
Ich hab jetzt mal ein TXMLDocument auf die Oberfläche geklatscht und dann das
XML in ein Treeview eingelsen. klappt soweit.
Der Code:
Delphi-Quellcode:
procedure TSiplaceXML.recInsertNodes(rootNode: IXMLNode; Node: TTreeNode);
var i : Word;
begin
if rootNode.ChildNodes.Count > 0 then
for i := 0 to rootNode.ChildNodes.Count-1 do begin
if rootNode.ChildNodes[i].NodeName<>'#text' then
recInsertNodes(rootNode.ChildNodes[i],TreeView1.Items.AddChild(node,rootNode.ChildNodes[i].nodename))
else
recInsertNodes(rootNode.ChildNodes[i],TreeView1.Items.AddChild(node,rootNode.ChildNodes[i].nodevalue))
end;
end;
Sieht dann so aus:
Nun möchte ich einzelne Elemente gezielt auslesen.
Ich habs zum Test auf das Element SetupName abgesehen das ein weiterer Node zu PrintLine ist.
Und ich bekomm ne
Exception geschmissen.
Delphi-Quellcode:
..
var
activenode: IXMLNode;
allnodes:ixmlnodelist;
..
begin
..
activenode:=SiProXML.documentelement.ChildNodes.findnode('PrintLine');
listbox1.Items.Add(activenode.childnodes.Nodes[SiProXML.documentelement.ChildNodes.FindNode('SetupName')].nodevalue);
..
Ich bin mir sicher einer von euch kennt die Antwort
Bitte keine Suchverweise ich hab mich da schon nen halben tag rumgetrieben und nichts gefunden was geholfen hätte.
Gruß Matthias