Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   XML2Tree: XDOM nicht vorhanden? (https://www.delphipraxis.net/160177-xml2tree-xdom-nicht-vorhanden.html)

Jazzman_Marburg 1. Mai 2011 09:01

XML2Tree: XDOM nicht vorhanden?
 
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

ConnorMcLeod 1. Mai 2011 10:10

AW: XML2Tree: XDOM nicht vorhanden?
 
Der Code ist scheinbar von hier; weiter unten ist eine komplette Unit mit allen *uses*. Dort müsste auch TDOMNode zu finden sein.

Jazzman_Marburg 1. Mai 2011 11:14

AW: XML2Tree: XDOM nicht vorhanden?
 
Zitat:

Zitat von ConnorMcLeod (Beitrag 1098011)
Der Code ist scheinbar von hier; weiter unten ist eine komplette Unit mit allen *uses*. Dort müsste auch TDOMNode zu finden sein.

Hallo.

Der Code ist nicht nur scheinbar von dort (hatte ich ja erwähnt), er ist sogar in freepascal -- und damit leider nicht lauffähig, weil mein Delphi bei den uses:
DOM, XMLWrite
aussteigt. :cry:

Dennoch Danke & Gruß
Jazzman

ConnorMcLeod 1. Mai 2011 12:51

AW: XML2Tree: XDOM nicht vorhanden?
 
Alles klar.

Wenn die JEDI Bilbliothek verwendbar ist, dann empfehle ich TJvSimpleXML.
Ansonst vllt. XML Parser

madtom 1. Mai 2011 13:02

AW: XML2Tree: XDOM nicht vorhanden?
 
Hallo,

wirf mal einen Blick auf ein Programm aus "Mastering Delphi 6" von Marco Cantu:

http://code.marcocantu.com/p/marcode.../23/XmlDomTree

ich glaube, das ist das was Du suchst.

Beste Grüße

Thomas :-D

Jazzman_Marburg 1. Mai 2011 15:06

AW: XML2Tree: XDOM nicht vorhanden?
 
Prima,
der Hinweis auf Marcos "Mastering Delphi 6" hat geholfen.:thumb:

Lieben Dank an alle!

Gruß
Jazzman


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz