Hallo Gemeinde,
ich tu mich mal wieder schwer: Ich möchte gern ein
XML-Document in einem TreeView anzeigen. Dabei soll die Beschriftung jedes Tree-Knotens der Inhalt eines Attributs (wenn vorhanden) des Knotens sein. Hierzu fand ich
diesen vorzüglichen Code (freepascal) - der leistet aber noch ein wenig Widerstand, weil der Typ
TDOMNode nicht bekannt ist.
Delphi-Quellcode:
procedure TForm1.XML2Tree(tree: TTreeView; XMLDoc: TXMLDocument);
var
iNode: TDOMNode; // Problem: Undeklarierter Bezeichner 'TDomNode'
procedure ProcessNode(Node: TDOMNode; TreeNode: TTreeNode);
var
cNode: TDOMNode;
begin
if Node = nil then Exit; // Aufhören, wenn ein Blatt erreicht ist
// Einen Knoten zum Baum hinzufügen
TreeNode := tree.Items.AddChild(TreeNode, Node.Attributes[0].NodeValue);
// Zum Kindknoten weiter gehen
cNode := Node.ChildNodes.Item[0];
// Alle Kindknoten bearbeiten
while cNode <> nil do
begin
ProcessNoDe(cNode, TreeNode);
cNode := cNode.NextSibling;
end;
end;
begin
iNode := XMLDoc.DocumentElement.ChildNodes.Item[0];
while iNode <> nil do
begin
ProcessNode(iNode, nil); // Rekursiv
iNode := iNode.NextSibling;
end;
end;
himitsu
schrieb in einem ähnlichem Beitrag genau dazu:
"
TDOMNode are daclared in unit XDOM (Extended Document Object Model) or OXMLDOM (Open XML)".
Jetzt verstehe ich aber nicht die Konsequenz: Heisst das, ich kann den obigen Code nicht verwenden -- mein Delphi Starter sagt ja: TDomNode sei unbekannt.
Anders gefragt, könnte man TDomNode durch etwas entsprechendes ersetzen? In uses habe ich XMLIntf, xmldom, msxmldom stehen.
Vielen Dank im voraus!
Jazzman