Einzelnen Beitrag anzeigen

StTüff

Registriert seit: 3. Dez 2002
132 Beiträge
 
Delphi 2006 Enterprise
 
#1

XML-Referenz nach selectnodes

  Alt 19. Jan 2007, 09:48
Hallo!

Ich habe ein Programm geschrieben, in dem der Inhalt einer XML-Datei in einer Baumstruktur (TreeView) dargestellt wird. Zu jedem Knoten im TreeView gibt es eine Referenz auf den zugehörigen XML-Knoten. Somit kann ich eine Wertänderung im TreeView direkt im XML-Knoten speichern.

Soweit so gut. Ich habe aber nun eine Funktion, die per xpath bestimmte Knoten im XML auswählt und automatisch Werte verändert. Diese Änderung möchte ich nun auch direkt auf die TreeView-Anzeige übertragen, ohne den ganzen Baum neu Aufzubauen.
Ich habe also folgendes versucht:

Edit: Fehler korrigiert...
Delphi-Quellcode:
X_Path := '...... ';
XML_CheckNodeList:=XMLDataModule.XMLDoc.selectNodes(X_Path);
XML_CheckNodeList.reset();
XML_CheckNode:= XML_CheckNodeList.nextNode();
while XML_CheckNode <> nil do
begin
  //Was verändern
  .....
  
  //Nach dem passenden Knoten im TreeView suchen
  TreeNode:=FindTypNode(XML_CheckNode );
  
  //TreeNode verändern
  .....
  XML_CheckNode:= XML_CheckNodeList.nextNode();
end;

function FindTypNode(LinkedXMLNode:IXMLDOMNode):TTreeNode;
var
  cnt:integer;
begin
    //Durch alle Knoten laufen
    for cnt:= 0 to form1.TrView_Struktur.Items.Count-1 do
    begin
      if PNodeState(form1.TrView_Struktur.Items[cnt].Data).XMLNode
          = LinkedXMLNode
      then
      begin
        result:=form1.TrView_Struktur.Items[cnt];
        exit;
     end;
    end;
  result:=nil;
end;
Leider ist es aber so, dass die Refernezen (auf die XML-Knoten), die ich aus der NodeList erhalte nicht mit denen übereinstimmen, die im TreeView hinterlegt sind.

Wird bei "selectnodes" eine Kopie erzeugt?
Ich habe hier ein kleines Verständnisproblem. Deshalb möchte ich gerne:
1. wissen was da passiert
2. eine Lösung für das Problem finden.

Vielen Dank für Eure Unterstützung,

StTüff
  Mit Zitat antworten Zitat