XmlWriter non sta creando un nuovo elemento in VB.net
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
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