Benutzer mit den meisten Antworten
XMLWriter, Fehlerhandling

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 SandraStringBuilder 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");
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
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ß
-
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