Domanda

Sto scrivendo un file XML usando VB.net. Quando provo a creare un altro elemento da scrivere oltre il primo, viene fuori dicendo:

" Token StartElement nello stato EndRootElement comporterebbe un documento XML non valido. Assicurati che l'impostazione ConformanceLevel sia impostata su ConformanceLevel.Fragment o ConformanceLevel.Auto se desideri scrivere un frammento XML. & Quot;

Non sono sicuro del perché lo stia facendo considerando che l'elemento precedente è stato chiuso. Ho provato a cercare un writer.WriteEndRootElement, ma non ne ho visto nessuno. Qualche suggerimento per farlo funzionare? =)

    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
È stato utile?

Soluzione

Un documento XML può avere un solo elemento radice. Stai iniziando il documento, scrivendo l'intestazione " " elemento, chiudendo l'intestazione "quotata" elemento, quindi avviando una nuova "variabile" element - che sarebbe un secondo elemento root.

O racchiudi entrambi " header " e "variabile" all'interno di un singolo elemento di livello superiore o spostane uno all'interno dell'altro.

Altri suggerimenti

Puoi provare qualcosa del genere

 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top