XDocument ohne Decoration speichern

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von DniBo.

    XDocument ohne Decoration speichern

    Hallo zusammen,

    ich verwende XDocument und LINQtoXML um XML-Dateien zu öffnen, anzupassen und wieder zu speichern. Eigentlich klappt das soweit bestens, bis auf das nun eine von uns verwendete Fremd-Applikation beim lesen bzw schreiben in die zuvor von mir angepasste XML-Datei eine Fehlermeldung generiert.

    Soweit habe ich herausgefunden das ich bei Verwendung von XDocument.Save(strFileName, SaveOptions.None) die Decoration in die Datei reinschmuggle.

    Wie kann ich bei XDocument unterbinden das die Angaben mit abgelegt werden? XDocument.Declaration = new XDeclaration (nothing, nothing, nothing) funktioniert leider nicht...


    Viele Grüsse,
    Daniel

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DniBo“ ()

    Hi EDR,

    wäre eine gute Idee gewesen, klappt aber nicht, auch wenn ich mit XElement.Load die Datei einlese, bearbeite und dann per XElement.Save speichere wir XDecoration (<?xml version="1.0" encoding="utf-8" ?>) verwendet.

    Gruss,
    Daniel
    Hi RodFromGermany,

    nachdem ich realisiert hatte das im Original-File die XDecoration fehlt und dann nach dem bearbeiten und speichern eingetragen wurde, hatte ich schon danach gesucht, aber ich kann XDecoration nicht disablen.

    XElement erzeugt beim speichern ebenfalls den Eintrag, um Probleme beim speichern (File in use etc) zu vermeiden, wollte ich das XML-File per XDocument.Load laden und wieder speichern.

    Wenn es keine andere Möglichkeit gibt das Erzeugen der Angaben zu vermeiden, müsste ich ggf über XmlWriter gehen und die Datei per Stream überschreiben, aber das wäre erst meine letzte Option.

    Ich dachte schon XDecoration auf null oder nothing zu setzen, das ging aber nicht auf :)

    Viele Grüsse,
    Daniel
    Im Ernstfall liest Du das XML-Dokument per ReadAllLines ein, schmeißt die erste Zeile raus und speicherst es wieder ab.
    Jedoch
    liegt der eigentliche Fehler bei der anderen Applikation, die wohl das XML-Format nicht ganz richtig kennt.
    Ist die in Qt geschrieben :?:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi EDR,

    das wird die einzige Lösung sein, allerdings wollte ich das "überschreiben" vermeiden weil es u.U. zu einem Konlikt kommen kann (File in Use etc). Ich hatte schon mal eine Fehlersuche nach komischen Fehlern wo das eigene Tool trotz flush und andere Dinge das File nicht freigegeben hat und dann der Schreib-Prozess ein Fehler geworden hat.

    Aber dann muss ich es wohl wieder so machen...


    Viele Grüsse,
    Daniel
    Hallo zusammen,

    also, ich habe es jetzt mit einem XmlWriter gemacht, hier konnte ich als einziges unterbinden das XmlDecoration verwendet wird.

    Das die Applikation (die wir einsetzen) keine korrekte XML-Datei akzeptiert ist schon heftig, habe das auch schon an den Entwickler in die USA gemeldet aber keine Antwort bekommen :)

    Vielen Dank nochmal für Eure Tipps.

    Gruss,
    Daniel