Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Wie XML Rückgabe aus post weiterverarbeiten (https://www.delphipraxis.net/140338-wie-xml-rueckgabe-aus-post-weiterverarbeiten.html)

himitsu 17. Sep 2009 10:55

Re: Wie XML Rückgabe aus post weiterverarbeiten
 
Zitat:

Zitat von p.sprick
Geht es nicht irgendwie über dn.attributes.attributesbyname([NAME]) oder
dn.attributes[1].value oder ähnlich?

Ach menno, wer ist denn hier auf die blöde Idee mit den Attributen gekommen?

Es gibt doch bei dir keine Attribut, sondern nur Nodes. :wall:

PS: dl1[j].attributes wäre dn.attributes gewesen, aber da "NAME" ein Node ist,
würde es dn.childNodes sein.

.childNodes ist 'ne IDOMNodeList und die bietet aber nur (jedenfalls nach der Interface-Definition, welche ich grad vor mir hab) den Zugriff via Index und nicht über den NodeName ... da wird es wohl/hoffentlich irgendwo anders eine "Namenssuche" gegen? :gruebel:

(nja, ich komm mit diesem komischem MSXML-DOM auch nich ganz zurecht, drum bau ich mir ja etwas, womit ich klarkomm :freak: )

p.sprick 17. Sep 2009 11:37

Re: Wie XML Rückgabe aus post weiterverarbeiten
 
Hallo Leute,
speziellen Dank an Himitsu der XML-Guru.

Ich habe es jetzt mit IXMLDOM geloest.
hier der komplette Code mit Abruf der Daten aus dem Internet!
Es geht bestimmt eleganter, aber es funktioniert.
Für Anregungen habe ich immer ein Ohr offen!

Gruss Paul

Delphi-Quellcode:
procedure TForm4.Button1Click(Sender: TObject);
Const
   Filename = 'c:\temp\testxml.xml';
var
  FileStream           :tfilestream;  //* Ausgabe der Aufgerufene Seite
  i,j                  :Integer;    // * Zähler für die For-Schleife
  DataStream           :TIdMultiPartFormDataStream; //* Übergabe Stream für Aufgerufene Seite
  xpath                :string;

  doc                  : IXMLDOMDocument; //* XL DAtei
  categories,name      : IXMLDOMNodeList; //* enthält nodes
  subNode              : IXMLDOMNode; //* enthält eine Node

begin
  FileStream := TFileStream.create(Filename,fmCreate or fmOpenWrite or fmShareDenyWrite);
  DataStream:=TIdMultiPartFormDataStream.Create;

  IdHTTP1.Request.ContentType:='multipart/form-data';
  DataStream.addformfield('user','benutzer');   //Post-Daten in die StringList eintragen
  DataStream.addformfield('password','password');
  DataStream.addformfield('action','lese_kategorie');

  idHTTP1.Post('http://localhost\export\test.php',Datastream,FileStream);//Datei abrufen
  filestream.free;
  doc := CoDOMDocument.Create;
  doc.async:=false;
  doc.load(filename);
  xPath := '/CATEGORIES/CATEGORIES_DATA/ID';
  categories := doc.selectNodes(xpath);
  for i := 0 to Pred(categories.length) do
  begin
              xPath := format('/CATEGORIES/CATEGORIES_DATA[%d]/ID',[i]);
              subnode:= doc.selectsinglenode(xpath);
              Memo1.Lines.add('Kategorie: '+ string(subnode.Text)+' gespeichert !');
              xpath := Format('/CATEGORIES/CATEGORIES_DATA[%d]/NAMES/NAMEENTRY',[i]);
              name:= doc.selectNodes(xPath);
              for j:= 0 to pred(name.length) do begin
                   xpath := Format('/CATEGORIES/CATEGORIES_DATA[%d]/NAMES/NAMEENTRY[%d]/LANGUAGEID',[i,j]);
                   subnode := doc.selectsinglenode(xpath);
                   Memo1.lines.add('Sprache : '+string(subnode.text));
                   xpath := Format('/CATEGORIES/CATEGORIES_DATA[%d]/NAMES/NAMEENTRY[%d]/NAME',[i,j]);
                   subnode := doc.selectsinglenode(xpath);
                   Memo1.lines.add('Name : '+string(subnode.text));
              end; //* for j
  end; //* for i
  filestream.free;
end;

himitsu 17. Sep 2009 11:40

Re: Wie XML Rückgabe aus post weiterverarbeiten
 
Ein paar Try-Finally können nicht schaden, da du ja "unkontrolliert" externe Daten einließt.
Damit die ganzen erstellen Objekte auch bei einer Exception noch ordnungsgemäß entsorgt werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:42 Uhr.
Seite 2 von 2     12   

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