Einzelnen Beitrag anzeigen

mc-bain

Registriert seit: 11. Jan 2010
14 Beiträge
 
#1

X-Path LoadFromStream

  Alt 13. Okt 2011, 16:31
Hallo,
ich bekomme über einen Webservice XML Daten. Um die XML auszuwerten, nutze ich X-Path.
Beispiel:

Code:
procedure TForm2.btn2Click(Sender: TObject);
var aXMLDoc: IXMLDOMDocument2;
    aXMLNode: IXMLDOMNode;
    eintraege : IXMLDOMNodeList;
    i, j: integer;
begin
  aXMLDoc := CoDOMDocument60.Create;
  aXMLDoc.setProperty('NewParser', true);
  aXMLDoc.setProperty('SelectionLanguage', 'XPath');
 
  aXMLDoc.setProperty('SelectionNamespaces', 'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"');
                                             

  if not aXMLDoc.load('response.xml') then
    raise Exception.Create('XML nicht gefunden');


  eintraege := aXMLDoc.selectNodes('//soap:Envelope//eintrag'); // !!!


  if eintraege = nil then
     raise Exception.Create('kein Knoten gefunden!')
  else
  begin
   
    for i := 0 to eintraege .length - 1 do
    begin
      aXMLNode := eintraege .item[i];
      if aXMLNode.selectSingleNode('status') <> nil then
          ShowMessage(aXMLNode.selectSingleNode('status').text);


    end;

  end;

end;
Das ganze funktioniert, wenn ich vorher den erhaltenen XML String in eine XML-Datei abspeichere und wieder einlese mit

Code:
if not aXMLDoc.load('response.xml') then
.

Aber da ich nicht jedes mal eine temporäre Datei schreiben möchte, würde ich gerne LoadFromStream machen, da ich ja auch einen StringStream von meinem Webservice zurückbekomme.

Wie stelle ich das am Besten an?
Kann mir jemand weiterhelfen bitte?

Oder muss ich immer um mit X-Path zu arbeiten eine XML in Dateiform haben?

Vielen Dank.
mc
  Mit Zitat antworten Zitat