XML Dokument in BLOB Feld speichern

13. Oktober 2015 10:58

Hi Leute,

ich brauch mal Eure Hilfe, ich stehe total auf dem Schlauch...

Also ich hab eine XML Struktur, diese steckt schon komplett in eine Variable vom Typ DotNet "MSXML.DOMDocumentClass.'Microsoft.MSXML, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'". Wenn ich diese mit XMLDocument.save('c:\temp\test.xml'); kommt auch was dabei raus. Schön.

Nun möchte ich das XML nicht irgendwo ablegen, sondern in einem Blob Feld in einer Tabelle speichern. Dafür nutze ich folgenden Code:

[code]
CLEAR(TableX.BlobField);
TableX.BlobField.CREATEOUTSTREAM(OutStream);
XMLDocument.save(OutStream);
TableX.MODIFY(TRUE);
[/code]

Beim XMLDocument.save(OutStream); kommt die angehängte Fehlermeldung.

Grüße
sas_fisch
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: XML Dokument in BLOB Feld speichern

13. Oktober 2015 13:58

Klar man könnte es speichern und dann ins BLOB rein holen, dass funktioniert:

[code]
XMLDocument.save('c:\temp\ImporTest.xml');
TableX.BlobField.IMPORT('c:\temp\ImporTest.xml');
TableX.MODIFY(TRUE);
[/code]

Es wäre gut, wenn ich ohne die Speicherung durch kommen könnte. Hat da jemand eine Idee?

Und dann gleich die nächste Frage, wie bekomme ich das aus dem BLOB Feld in eine Variable vom Typ DotNet "MSXML.DOMDocumentClass.'Microsoft.MSXML, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'" wieder rein, wenn ich das brauche? Und auch da am besten ohne den Umweg des Zwischenspeicherns?

Re: XML Dokument in BLOB Feld speichern

14. Oktober 2015 21:27

Hallo,
hier mal der Beispielcode für das Auslesen mit InStream,

Code:
ObjectMetadata.CALCFIELDS(Metadata);
ObjectMetadata.Metadata.CREATEINSTREAM(InStream);
ObjectXmlDoc := ObjectXmlDoc.XmlDocument;
ObjectXmlDoc.Load(InStream);


Demzufolge sollte Deine erste Lösung mit OutStream zum Speichern auch gehen.
Ich verwende Allerdings als DotNet Variable System.XML also:

System.Xml.XmlDocument.'System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'

Die nimmt auch der Standard: Siehe CU 6224

MFG