Einzelnen Beitrag anzeigen

s-off
(Gast)

n/a Beiträge
 
#5

Re: XML: Namespace - Zuweisung funktioniert nicht

  Alt 21. Mai 2006, 22:01
Hallo,

das funktioniert leider auch nicht *verzweifel*

Also, ich lese die Datei folgendermaßen ein:

Delphi-Quellcode:
procedure TfrmMain.toolbarButtons_btnOpenFileClick(Sender: TObject);
var
   Node: IXMLDOMElement;
begin
   if OpenDialog1.Execute then
   begin
      xmlDoc := CoDomDocument40.Create;
      xmlDoc.async := False;

      sXMLFileName := OpenDialog1.FileName;

      xmlDoc.Load(sXMLFileName);

      ClearTreeView(tvTree);
      Node := xmlDoc.selectSingleNode('/inputx/document') as IXMLDOMElement; <- hier habe ich schon zig Varianten getestet
      ShowFolders(Node, nil); <- hier übergebe ich Node an ShowFolders
      oStatusBar1.Panels[0].Caption := sXMLFileName;
   end;
end;
Dann rufe ich die Prozedur ShowFolders auf und übergebe die Node:

Delphi-Quellcode:
procedure TfrmMain.ShowFolders(Node: IXMLDOMElement; nParent: PVirtualNode);
var
   i: Integer;
   nlFolders: IXMLDOMNodeList;
   nName, nChild: IXMLDOMElement;
   TreeData: TTreeData;
begin
   ChangeCursor;
   tvTree.BeginUpdate;
   try
      tvTree.NodeDataSize := SizeOf(TTreeData);
      nlFolders := Node.selectNodes('Folder');
      for i := 0 to Pred(nlFolders.length) do
      begin
         nChild := nlFolders.item[i] as IXMLDomElement;
         nName := nChild.selectSingleNode('name') as IXMLDOMElement;
         TreeData.Caption := nName.text;
         TreeData.Node := nChild;
         ShowFolders(nChild, AddVSTStructure(nParent, TreeData, nChild));
      end;
   finally
      tvTree.EndUpdate;
      ChangeCursor;
   end;
end;
Das Problem ist aber, dass in der ersten Prozedur die Variable Node schon Nil bleibt.
Node := xmlDoc.selectSingleNode('/inputx/document') as IXMLDOMElement; findet also nichts

Hier noch die Funktion, mit der ich dann den TreeView fülle:

Delphi-Quellcode:
function TfrmMain.AddVSTStructure(ANode: PVirtualNode; ARecord: TTreeData; nNode: IXMLDOMElement): PVirtualNode;
var
   Data: PTreeData;
begin
   Result := tvTree.AddChild(ANode);
   Data := tvTree.GetNodeData(Result);
   tvTree.ValidateNode(Result, False);
   Data^.Caption := ARecord.Caption;
   Data^.Node := nNode;
   Data^.ImageIndex := 1;
end;
Ich öle schon den ganzen Tag daran herum, aber es will und will nicht funktionieren
Wäre lieb, wenn sich nochmal jemand erbarmen würde
  Mit Zitat antworten Zitat