26. August 2024 13:40
XmlNodeList := XmlDoc.SelectNodes('//MITGLIEDNR'); // Anzahl der Rechnungsköpfe (=ParentNode) ermitteln (Knoten MITGLIEDNR kommt nur einmal je Rechnung vor).
FOR p:= 0 TO XmlNodeList.Count -1 DO BEGIN // wir durchlaufen die Rechnungsköpfe
XmlNode := XmlDoc.SelectSingleNode('//key_'+ FORMAT(p) +'/MITGLIEDNR');
loctxtMglNr := XmlNode.InnerText; //Inhalt des Knotens MITGLIEDNR im ParentNode ermitteln
ChildNodeList := XmlNode.ChildNodes(); //Kinder des aktuellen ParentNode ermitteln --> und das geht nicht!
FOR i := 0 TO ChildNodeList.Count -1 DO BEGIN
ChildNode := ChildNodeList.ItemOf(i);
ChildNode := ChildNode.SelectSingleNode('//ARTIKEL');
MESSAGE(ChildNode.InnerText);
END;
END;
27. August 2024 13:45
PROCEDURE GetParentAndChildNodes@1();
VAR
XmlDoc@2 : DotNet XmlDocument;
XmlNodeList@3 : DotNet XmlNodeList;
XmlNode@4 : DotNet XmlNode;
ParentNode@5 : DotNet XmlNode;
ChildNodeList@6 : DotNet XmlNodeList;
ChildNode@7 : DotNet XmlNode;
BEGIN
// XML-Dokument laden
XmlDoc := XmlDoc.XmlDocument;
XmlDoc.Load('C:\path\to\your\file.xml');
// Alle 'key_0' Knoten auf der obersten Ebene finden
XmlNodeList := XmlDoc.SelectNodes('//data/key_0');
// Durch die Knoten navigieren
FOR i := 0 TO XmlNodeList.Count - 1 DO BEGIN
XmlNode := XmlNodeList.Item(i);
ParentNode := XmlNode.ParentNode;
MESSAGE('Parent Node Name: %1', ParentNode.Name);
// Child-Nodes des aktuellen 'key_0' Knotens finden
ChildNodeList := XmlNode.SelectNodes('key_0');
// Durch die Child-Nodes navigieren
FOR j := 0 TO ChildNodeList.Count - 1 DO BEGIN
ChildNode := ChildNodeList.Item(j);
MESSAGE('Child Node Name: %1, Value: %2', ChildNode.Name, ChildNode.InnerText);
END;
END;
END;