Einzelnen Beitrag anzeigen

Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#1

XML2Tree: XDOM nicht vorhanden?

  Alt 1. Mai 2011, 10:01
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
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat