Frage

Ich schreibe eine XML-Datei aus mit VB.net. Wenn ich versuche, ein anderes Element zu erstellen, vorbei an den ersten geschrieben werden, es Fehler heraus und sagte:

„Token start in Zustand EndRootElement in einem ungültigen XML-Dokument führen würde. Stellen Sie sicher, dass die ConformanceLevel Einstellung ConformanceLevel.Fragment oder ConformanceLevel.Auto gesetzt, wenn Sie ein XML-Fragment schreiben wollen.“

Ich bin mir nicht sicher, warum es dies unter Berücksichtigung tut, dass das vorherige Element geschlossen wurde. Ich habe versucht, für eine writer.WriteEndRootElement zu suchen, aber ich habe nicht dort zu sehen. Irgendwelche Vorschläge, um es zu arbeiten? =)

    Private Sub writeXMLFile(ByVal childform As Fone_Builder_Delux.frmData, ByVal filename As String)

        Dim xmlSettings As New XmlWriterSettings()
        xmlSettings.Indent = True
        xmlSettings.NewLineOnAttributes = True

        Using writer As XmlWriter = XmlWriter.Create(filename, xmlSettings)

            writer.WriteStartDocument()
            writer.WriteStartElement("header")

            writer.WriteStartAttribute("filepath")
            writer.WriteValue(filename)
            writer.WriteEndAttribute()

            writer.WriteEndElement()
            writer.WriteStartElement("variable")
            writer.WriteStartAttribute("varName")

            writer.WriteValue(childform.datagridHeaders.Item(0, 1))

            writer.WriteEndAttribute()
            writer.WriteEndElement()
            writer.WriteEndDocument()
            writer.Flush()

        End Using


    End Sub
War es hilfreich?

Lösung

Ein XML-Dokument kann nur ein Wurzelelement hat. Sie starten das Dokument, das „Header“ Element zu schreiben, das „Header“ Element zu schließen, dann ein neues „Variable“ ab Element -., Die ein zweites Wurzelelement sein würden

Entweder umschließen beide „Header“ und die „variable“ innerhalb eines übergeordneten Elements oder einer von ihnen innerhalb des anderen bewegen.

Andere Tipps

Sie können so etwas wie dies versuchen

 Private Sub writeXMLFile(ByVal childform As Fone_Builder_Delux.frmData, ByVal filename As String)

    Dim xmlSettings As New XmlWriterSettings()
    xmlSettings.Indent = True
    xmlSettings.NewLineOnAttributes = True

    Using writer As XmlWriter = XmlWriter.Create(filename, xmlSettings)

        writer.WriteStartDocument()
        writer.WriteStartElement("root")
        writer.WriteStartElement("header")

        writer.WriteStartAttribute("filepath")
        writer.WriteValue(filename)
        writer.WriteEndAttribute()

        writer.WriteEndElement()
        writer.WriteStartElement("variable")
        writer.WriteStartAttribute("varName")

        writer.WriteValue(childform.datagridHeaders.Item(0, 1))

        writer.WriteEndAttribute()
        writer.WriteEndElement()
        writer.WriteEndElement()
        writer.WriteEndDocument()
        writer.Flush()

    End Using


End Sub
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top