Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi BlobFeld in eine XML Speichern (https://www.delphipraxis.net/113871-blobfeld-eine-xml-speichern.html)

hhluemmel 16. Mai 2008 07:36


BlobFeld in eine XML Speichern
 
Ich erstelle ein XML-Dokument wie folgt:

<DELPHI>
procedure TForm1.Button1Click(Sender: TObject);
var
XML : TXMLDocument;
Table : IXMLNode;
Field : IXMLNode;
i : Integer;
begin
XML := TXMLDocument.Create(Application);
try
XML.Active:=True;
XML.AddChild('TextXMLDokument');
XML.StandAlone := 'yes';
XML.Version := '1.0';

Table1.Active := True;
Table := XML.DocumentElement.AddChild(Table1.TableName);
For i := 0 to Table1.FieldCount-1 do
begin
Field := Table.AddChild(Table1.Fields[i].FieldName);
Field.Text := Table1.Fields[i].Value;
end;

finally
Memo1.Lines.Assign(XML.XML);
XML.Destroy;
Table1.Active := False;
end;
end;
</DELPHI>

Mein Problem ist, das ich Tabellen habe, die ein Blobfeld haben was entweder ein BMP oder aber eine Dokument (Word, PDF etc)
enthalten. Wie kann ich diese mit in das XML-Dokument speichern?

Besten Dank

Bernhard Geyer 16. Mai 2008 07:42

Re: BlobFeld in eine XML Speichern
 
z.B. Base64-Codiert als CDATA.

hhluemmel 16. Mai 2008 11:14

Re: BlobFeld in eine XML Speichern
 
Ich habe jetzt hier im Forum reichlich gesucht, aber ich kann leider kein
Beispiel zu meinem Problem finden ... Mit ist nicht klar, wie ich zu
einem "TXMLDocument" ein Note vom Type cData erzeuge, bzw. den Inhalt
des Blob-Feldes einer Tabelle in ein cData schreibe ....

Wäre für Beispiele und andere Hilfe sehr dankbar ..

hhluemmel 19. Mai 2008 07:43

Re: BlobFeld in eine XML Speichern
 
Kann mir hier keiner ein Beispiel geben oder weite Hinweise?

Bernhard Geyer 19. Mai 2008 07:45

Re: BlobFeld in eine XML Speichern
 
Ich verwende nicht TXMLDocument sondern OpenXML direkt. Hier müsste dir jemand ein Beispiel schreiben der diese Komponente verwendet.

hhluemmel 20. Mai 2008 08:50

Re: BlobFeld in eine XML Speichern Lösung
 
File in Base64 codieren

Delphi-Quellcode:
uses ....
   XMLDoc,XMLIntf,MSXML;



function TForm1.GetBase64CodeFile(pFileName: string):String;
var
 cFileData  : TStringStream;
 cFileString : String;
 cFileStream : TFileStream;
begin
  if (pFileName<>'') then
  begin
    if FileExists(pFileName) then
     begin
       cFileData := TStringStream.Create(cFileString);
       cFileStream := TFileStream.Create(pFileName,fmOpenRead);
       try
         cFileStream.Position := 0;
         cFileData.CopyFrom(cFileStream,cFileStream.Size);
         Result := Base64.Encode(cFileData.DataString);
         Application.ProcessMessages;
       finally
         cFileData.Destroy;
         cFileStream.Destroy;
       end;
     end;

  end;
end;
cData Segment erstellen

Delphi-Quellcode:
procedure TForm1.AddFileData;
var
  cData : IDOMCDATASection;
begin
  cData := xmlDocument.DOMDocument.createCDATASection(xmlCData);
  xmlNode.DOMNode.appendChild(cData);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz