none
XMLWriter, Fehlerhandling RRS feed

  • Frage

  • Hallo,
    wie kann ich das evtl. eleganter lösen.
    Teils weiß ich eben nicht, ob der Inhalt befüllt ist oder null ist.
    Evtl. geht es auch wirklich nicht anders.
    writer.WriteAttributeString("code", PROCESSSTARTRESPONSE.code != null ? PROCESSSTARTRESPONSE.code : "");
    Ich muss eben alle Möglichkeiten abfangen.
    long number;
    long side;
    long.TryParse(reader.GetAttribute("number"), out number);
    long.TryParse(reader.GetAttribute("side"), out side);
    Was passiert, wenn side nicht vorhanden ist?
    Ist es evtl. besser ein try catch über die gesamte Schreibmethode zu machen?

    Oder Convert.ToInt32 ... zu nehmen?

    Viele Grüße Sandra

    StringBuilder build = new StringBuilder();
    
    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent = true;
    settings.IndentChars = "  "; // 2 Leerzeichen
    XmlWriter writer = XmlWriter.Create(build, settings);
    writer.WriteStartDocument();
    
    // Start-Tag des Stammelements
    writer.WriteStartElement("ROOL");
    writer.WriteAttributeString("info", info);
    
    // Start-Tag von 'PROCESSSTARTRESPONSE'
    writer.WriteStartElement("PROCESSSTARTRESPONSE"); // , "code", PROCESSSTARTRESPONSE.code != null ? PROCESSSTARTRESPONSE.code.  : "");
    
    writer.WriteAttributeString("code", PROCESSSTARTRESPONSE.code != null ? PROCESSSTARTRESPONSE.code : "");
    writer.WriteAttributeString("ori, PROCESSSTARTRESPONSE.ori);
    
    writer.WriteAttributeString("eText", PROCESSSTARTRESPONSE.e_text);
    writer.WriteAttributeString("eSource", PROCESSSTARTRESPONSE.e_source);
    
    writer.WriteStartElement("SIDE1");
    writer.WriteStartElement("POSITIONS");

        
    Montag, 2. Mai 2016 16:42

Antworten

  • Hallo Sandra,

    Beim Lesen via XmlReader kann HasAttribute verwenden, beim XmlWriter muss man schon testen.

    Für Zahlen wie Integer kann man entweder einen Standardwert oder aber Nullable<T> verwenden, z. B. int? anstatt int.

    Gruß Elmar

    • Als Antwort markiert Sandra Bauer Dienstag, 3. Mai 2016 17:19
    Montag, 2. Mai 2016 18:30
    Beantworter

Alle Antworten

  • Hallo Sandra,

    Eleganz ist so eine Sache :-)

    Hast du eventuell ein XML-Beispiel dafür, was es werden soll? Ich nehme mal an, es ist hängt mit deiner letzten Frage zusammen. Bau mal eine XML-Datei, die alle möglichen Elemente nebst Attributen enthält. Elemente, die öfter vorkommen können, bitte jeweils nur 2 mal darstellen.

    long.TryParse(reader.GetAttribute("side"), out side);

    Was passiert, wenn side nicht vorhanden ist?

    Dazu finde ich in der Hilfe:

    Wenn das Attribut nicht gefunden wird oder Wert String.Empty ist, wird null zurückgegeben.

    Try...Catch... sollte für diesen Zweck nicht verwendet werden (obwohl du es nehmen solltest, um unerwartete Fehler abzufangen).

    Ich würde dir raten, die Daten (->Einlesen) erst in ein passendes Objekt zu transportieren, dann kontrolliert notwendige Änderungen/Ergänzungen vornehmen und dann erst zurückschreiben.

    Nebenbei, wie sieht die Klasse

    PROCESSSTARTRESPONSE

    aus?

    Gruß

    Montag, 2. Mai 2016 18:29
  • Hallo Sandra,

    Beim Lesen via XmlReader kann HasAttribute verwenden, beim XmlWriter muss man schon testen.

    Für Zahlen wie Integer kann man entweder einen Standardwert oder aber Nullable<T> verwenden, z. B. int? anstatt int.

    Gruß Elmar

    • Als Antwort markiert Sandra Bauer Dienstag, 3. Mai 2016 17:19
    Montag, 2. Mai 2016 18:30
    Beantworter