none
XmlSerializer - Fragen - Datum, leeres gültiges XML Dokument RRS feed

  • Frage

  • Hallo,
    wie kann ich dem XMLTextWriter zusätzlich zum stream ein File for Trace zuweisen.
    Ich finde nichts.

    Ich mache es halt bis dato 2 mal, denke es müsste bestimmt noch andes gehen, oder?

    <BaseInformations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    
    

    Wie kann man zum Header für TRACE noch ein Datum mitgeben?

    Welche Möglichkeiten bieten sich an für die Initialisierung ein leeres XML Dokument mit Datum anzuzeigen?

    if (true == File.Exists(TelegramFile_5))
          {
            File.Delete(TelegramFile_5);
          }
          using (StreamWriter swNew = new StreamWriter(TelegramFile_RMES_Machine))
          {
            DateTime dateTime = DateTime.Now.ToLocalTime();
            string sHilf = String.Concat(dateTime.ToString("yyyy.MM.dd,HH:mm:ss:ffff, - ,"), "Empty");
            swNew.WriteLine(sHilf);
            swNew.Close();
          }
    


    Danke für Tipps.

    Grüße Andreas

     XmlSerializer xmlSerializer = new XmlSerializer(typeof(BaseInformations));
                MemoryStream memStrm = new MemoryStream();
                UTF8Encoding utf8e = new UTF8Encoding();
                XmlTextWriter xmlSink = new XmlTextWriter(memStrm, utf8e);
                xmlSerializer.Serialize(xmlSink, dummyObject);
                byte[] utf8EncodedData = memStrm.ToArray();
                string interfaceData  = utf8e.GetString(utf8EncodedData);
              
           
                // ** Just for TRACE
                XmlSerializer serializer = new XmlSerializer(typeof(BaseInformations));
              
                TextWriter tr = new StreamWriter(TelegramFile);
                serializer.Serialize(tr, dummyObject);
                tr.Close();
       


    <?xml version="1.0" encoding="utf-8"?>
    <BaseInformations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <ListProgramName>
        <string>Produkt_AAA1</string>
        <string>Produkt_AAA2</string>
        <string>Produkt1_AAA1</string>
        <string>Produkt2_AAA2</string>
        <string>Produkt3_AAA1</string>
        <string>Produkt4_AAA2</string>
      </ListProgramName>
      <ListWidth>
        <double>120</double>
        <double>130</double>
        <double>175</double>
        <double>190</double>
        <double>200</double>
        <double>210</double>
        <double>300</double>
        <double>410</double>
      </ListWidth>
      <DatabaseName>C:\Simulation\bin\Debug\..\..\Database\Assembly567.XML</DatabaseName>
    </BaseInformations>

    Mittwoch, 2. März 2011 08:11

Antworten

  • Hallo Andreas,

    • timeStamp="2011-03-02T15:40:37.2656250+01:00"
      [...] Weißt Du wie man auf die Formatierung schnell kommt? 

    Ja, zum Beispiel [so]:
      string zeit = DateTime.Now.ToString("O");
    

    Du meinst es, weil der XmlSeralizer intern DateTime so serialisiert.
    Also ginge natürlich auch:

     XmlSerializer dateSerializer = new XmlSerializer(typeof(DateTime));
     StringWriter sw = new StringWriter(CultureInfo.InvariantCulture); 
     dateSerializer.Serialize(sw, DateTime.Now);
     MessageBox.Show(XElement.Parse(sw.ToString()).Value);
    

    Aber eigentlich würde ich eher ein Eigenschaft benutzen, nach dem Prinzip: KISS (keep it simple stupid ;-)

     


    ciao Frank
    Donnerstag, 3. März 2011 09:14

Alle Antworten

  • Hallo Andreas,

    es wir nicht klar, wo "genau" das Datum stehen soll. 
    Aber ganz allgemein kann man zum Beispiel entweder Deine BaseInformations Klasse etwa um eine Eigenschaft "Datum" erweitern.
    Oder man nutzt eine zweite Klasse, die eben eine Eigenschaft "BaseInformations" und eine DateTime Eigenschaft hat.
    Oder natürlich auch über IXmlSerializable die gewünschte Zeile dazuschreiben.


    ciao Frank
    Mittwoch, 2. März 2011 19:31
  • es wir nicht klar, wo "genau" das Datum stehen soll. 

    public DateTime Birthday { get; set; }
    Hallo Frank,

    ja eine Member einfügen, ist klar, das würde einfach gehen.

    <BaseInformations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    
    

    Ich meine ich hätte da mal was gesehen und dachte das geht evtl. automatisch.

    timeStamp="2011-03-02T15:40:37.2656250+01:00"
    

    Dann würde das vermutlich auch manuell mehr odewr weniger eingefügt.

    Weißt Du wie man auf die Formatierung schnell kommt? 

    Grüße Andreas 

    Am Rande    Evtl. nochmals zur Erinnerung, die Invoke-Server-Geschichte. Wäre echt nett.

    Mittwoch, 2. März 2011 20:36
  • Hallo Andreas,

    • timeStamp="2011-03-02T15:40:37.2656250+01:00"
      [...] Weißt Du wie man auf die Formatierung schnell kommt? 

    Ja, zum Beispiel [so]:
      string zeit = DateTime.Now.ToString("O");
    

    Du meinst es, weil der XmlSeralizer intern DateTime so serialisiert.
    Also ginge natürlich auch:

     XmlSerializer dateSerializer = new XmlSerializer(typeof(DateTime));
     StringWriter sw = new StringWriter(CultureInfo.InvariantCulture); 
     dateSerializer.Serialize(sw, DateTime.Now);
     MessageBox.Show(XElement.Parse(sw.ToString()).Value);
    

    Aber eigentlich würde ich eher ein Eigenschaft benutzen, nach dem Prinzip: KISS (keep it simple stupid ;-)

     


    ciao Frank
    Donnerstag, 3. März 2011 09:14
  • Aber eigentlich würde ich eher ein Eigenschaft benutzen, nach dem Prinzip: KISS (keep it simple stupid ;-)

    Hallo Frank,

    100% confirm, mein Prinzip. Danke.

    Dennoch eine Bitte.

    http://social.msdn.microsoft.com/Forums/de-DE/visualcsharpde/thread/f2b53154-fb7a-4352-9758-4152014ae679

    Grüße Andreas

    Donnerstag, 3. März 2011 18:03