Announcement

Collapse
No announcement yet.

xElement Save in Vb.Net 4.7 mit VisualStudio 2017

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • xElement Save in Vb.Net 4.7 mit VisualStudio 2017

    Hallo,

    ich muss ein XML-Dokument ändern. Ich definiere doc As XElement und mache ein doc = XElement.Load(myFile)
    Dann ändere ich einige Einträge und mache ein doc.Save(myFile)
    In der geänderten Version wird als erste Zeile <?xml version="1.0" encoding="utf-8"?> geschrieben.
    Diese ist in der Originalversion aber nicht vorhanden und das XML wird dadurch unbrauchbar. Es erzeugt beim Empfänger einen Error.
    Gibt es eine Möglichkeit, die Zeile beim Schreiben zu annulieren?

    Danke für eine Antwort.
    Grüße Norbert

  • #2
    Das ist die XML-Deklaration, die sollte jeder XML-Parser verstehen und sie sollte das XML-Dokument eher brauchbarer machen als unbrauchbar. Wie verarbeitet der Empfänger denn XML, welchen Fehler gibt es? Ansonsten bietet .NET ja auch `Save(xmlWriter)` und da kann man dann entsprechender XmlWriterSettings die Ausgabe der XML-Deklaration verhindern: https://docs.microsoft.com/en-us/dot...Xml_XmlWriter_
    Zuletzt editiert von Martin Honnen; 29.05.2019, 12:28.

    Comment


    • #3
      Danke Martin für die schnelle Antwort! Der Empfänger kann die Datei nur verarbeiten, wenn es keine XML-Deklaration gibt. Warum das weiss ich nicht. Es wird auch mit einem komplizierten Verfahren verschlüsselt.
      Mit dem XmlWriter klappt es wunder bar.
      Code:
              Dim xws As New XmlWriterSettings
              xws.OmitXmlDeclaration = True
              xws.Indent = True
              Dim xw As XmlWriter = XmlWriter.Create(myFile, xws)
              doc.Save(xw)
              xw.Close()
      Hab jetzt nur noch das Problem, dass mit diesem Code das erstellte Doc leer ist. Ich muss es unter anderem Namen speichern und dann wieder mit richtigem Namen an die alte Stelle kopieren. Lässt sich dieser Schritt irgendwie umgehen?

      Comment


      • #4
        Also doc.Save(xw) funktioniert ohne Fehlermeldung aber die Datei ist anschließend leer?
        Das kann ich mir eigentlich nicht vorstellen.
        Grundsätzlich ist ja die Benutzung von
        Using xw As XmlWriter = XmlWriter.Create(myFile, xws)
        doc.Save(xw)
        End Using
        sinnvoll.
        Aber solange man xw.Close() ohne Using aufruft, sollte die Datei auch ordentlich geschrieben werden.

        Comment


        • #5
          Ja, Du hast Recht. Hab den Code nicht bis zum Ende durchlaufen lassen. Die Datei wird ordentlich geschrieben. Ich danke Dir vielmals. Bye ...

          Comment

          Working...
          X