Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Problem mit Funktion - Knoten suchen in XML (https://www.delphipraxis.net/119154-problem-mit-funktion-knoten-suchen-xml.html)

Grolle 21. Aug 2008 08:23


Problem mit Funktion - Knoten suchen in XML
 
Hallo,

ich habe eine Funktion, die nicht will, wie ich will:
Delphi-Quellcode:
  function searchNodes(node : IXMLNode; match : widestring) : IXMLNode;
  var
    x : integer;
  begin
    result := nil;
    if node.HasChildNodes then
    begin
      for x := 0 to node.ChildNodes.Count - 1 do
      begin
      if node.ChildNodes[x].Text = match then
        result := node.ChildNodes[x];
      end;
    end;
  end;
und wirft bei mir diese Exception:
Zitat:

Erste Gelegenheit für Exception bei $7C812AEB. Exception-Klasse EXMLDocError mit Meldung 'Element enthält keinen einzelnen Textknoten'. Prozess Project1.exe
Kann ich abfragen, ob ein Element einen Textknoten enthält?

Viele Grüße

omata 21. Aug 2008 08:56

Re: Problem mit Funktion - Knoten suchen in XML
 
Warum übergibst du den Node? Du benutzt ihn ja gar nicht!

Delphi-Quellcode:
function searchNodes(node : IXMLNode; match : widestring) : IXMLNode;
var
  x : integer;
begin
  result := nil;
  if assigned(node) then
  begin
    if node.HasChildNodes then
    begin
      for x := 0 to node.ChildNodes.Count - 1 do
      begin
      if node.ChildNodes[x].Text = match then
        result := node.ChildNodes[x];
      end;
    end;
  end;
end;

Grolle 21. Aug 2008 09:07

Re: Problem mit Funktion - Knoten suchen in XML
 
Hi,
Zitat:

Zitat von omata
Warum übergibst du den Node? Du benutzt ihn ja gar nicht!

Uuups, copy&paste error. Habs oben korregiert. Leider funktioniert es immer noch
nicht (mit assigned)#?!?

Viele Grüße ...

franksreich 21. Aug 2008 09:27

Re: Problem mit Funktion - Knoten suchen in XML
 
Hi,

ich habe mir damit geholfen den Typen auszulesen

Delphi-Quellcode:
   
  If xmlnode.HasChildNodes Then
  For n:=0 To xmlnode.ChildNodes.Count-1 Do
  Begin
    newxmlnode:=xmlnode.ChildNodes.Nodes[n];
     
    ...
   
    Case newxmlnode.NodeType Of
      ntText : Begin
                 // Funktion um ein Text-Element zu bearbeiten
               End;
      ntElement: Begin
                 End;
      ntProcessingInstr: Begin
                         End;
      ntDocType: Begin
                 End;
      ntReserved,
      ntAttribute,
      ntCData,
      ntEntityRef,
      ntEntity,
      ntComment,
      ntDocument,
      ntDocFragment,
      ntNotation : Begin
                   End;

Grolle 26. Aug 2008 08:05

Re: Problem mit Funktion - Knoten suchen in XML
 
Hallo,

leider bin ich noch nicht wirklich weitergekommen. Kann mir
jemand sagen, ob es einen einfachen Weg gibt von einem Knoten
einen Unterknoten mit dem Text "xyz" zu finden? Eigentlich
möchte ich nur wissen, ob ein solcher existiert.

Viele Grüße ...

bigg 26. Aug 2008 09:50

Re: Problem mit Funktion - Knoten suchen in XML
 
Hallo,

welche XML-Bibliothek verwendest du?

Grolle 26. Aug 2008 09:52

Re: Problem mit Funktion - Knoten suchen in XML
 
Hi,

XMLIntf, XMLDoc -> IXMLDocument

Viele Grüße ...

bigg 26. Aug 2008 09:56

Re: Problem mit Funktion - Knoten suchen in XML
 
MS XML, TXML, OmniXML, OpenXML, SimpleXML oder noch was ganz anderes?

Grolle 26. Aug 2008 10:01

Re: Problem mit Funktion - Knoten suchen in XML
 
Hi,

TXML

Viele Grüße ...

// Habe gerade was entdeckt: isTextElement ... mal schauen

bigg 26. Aug 2008 10:07

Re: Problem mit Funktion - Knoten suchen in XML
 
Hallo,

mit dieser Lib habe ich noch nicht gearbeitet, aber geh doch mal Schritt für Schritt durch alle Knoten, und lass dir den Textknoten mittels ShowMessage anzeigen. Eventuell ist das XML-Dokument nicht konform aufgebaut und wirft dadurch diesen Fehler?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 Uhr.
Seite 1 von 2  1 2      

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