XMLWriter Erstellen Nicht Neues Element in VB.net
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
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