AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Prism XMLSerializer: Verschachtelte XML-Dateien mit Arrays?
Thema durchsuchen
Ansicht
Themen-Optionen

XMLSerializer: Verschachtelte XML-Dateien mit Arrays?

Ein Thema von Alexander · begonnen am 9. Jan 2007 · letzter Beitrag vom 18. Feb 2007
 
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#19

Re: XMLSerializer: Verschachtelte XML-Dateien mit Arrays?

  Alt 7. Feb 2007, 10:44
Zitat von Alexander:
Zitat:
Da kennt wohl einer Reflector noch nicht?
Ehrlich gesagt, nicht wirklich. Bei der geringen Zeit, die ich momentan habe .
Reflector spart Zeit, damit kannst du durch deine und fremde Binaries surfen wie ein einem Browser.
Zitat:
(Hast du dir dein Wissen eigentlich selbst beigebracht? )
Steht ja genug im Internet, und ich habe einen gesunden (kranken?) Spieltrieb.

Zitat:
Leider ja auch nicht. Hatte ich ja schon versucht. Der SQL-String wird komplett richtig ausgelesen. Auch die Komponente hat den eigentlich den richtigen String bekommen. Nur irgendetwas scheint zu stören und es kommt zum Fehler.
Kann es sein, dass Jet zu blöd ist um einen einzelnen line feed (#10) als Zeilenumbruch/Whitespace anzusehen?
Denn bei einem Zeilenumbruch geht definitiv der Cr (#13) flöten, wenn man nicht explizit über einen XmlReader deserialisiert...
Hier mal zur Anschauung
Delphi-Quellcode:
type
  SampleClass = public class
  public
    property CDataString : CData;
  end;

class method ConsoleApp.Main;
  const fileName = 'data.xml';
  const sampleString = 'SELECT A, B'#13#10
                       'FROM C';
  
  method ShowWhiteSpaces(value : String);
  begin
    Console.WriteLine(value.Replace(#32, '[Space]')
                           .Replace(#9, '[Tab]')
                           .Replace(#13#10, '[CrLf]')
                           .Replace(#13, '[Cr]')
                           .Replace(#10, '[Lf]'));
  end;
begin
  var serializer := new XmlSerializer(typeof(SampleClass));
  
  if not File.Exists(fileName) then
    using stream := new FileStream(fileName, FileMode.Create) do
    using writer := new XmlTextWriter(stream, Encoding.UTF8) do
    begin
      serializer.Serialize(writer, new SampleClass(CDataString := sampleString));
    end;
  
  // mit reader
  using stream := new FileStream(fileName, FileMode.Open) do
  using reader := new XmlTextReader(stream) do
    with s := serializer.Deserialize(reader) as SampleClass do
      ShowWhiteSpaces(s.CDataString);
  
  // ohne reader
  using stream := new FileStream(fileName, FileMode.Open) do
    with s := serializer.Deserialize(stream) as SampleClass do
      ShowWhiteSpaces(s.CDataString);
        
  Console.ReadLine();
end;
Interessant ist was dabei rauskommt:
Output
SELECT[Space]A,[Space]B[CrLf]FROM[Space][Space][Space]C
SELECT[Space]A,[Space]B[Lf]FROM[Space][Space][Space]C
Wie du siehst verhält sich der Overload von DeSerialize, der einen Stream schluckt, nicht wie es ein XmlReader per default macht.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 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