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