XmlWriter不在VB.net中创建新元素
题
我正在使用VB.net写出一个XML文件。当我尝试创建另一个要写入第一个元素的元素时,它错误地说:
“状态EndRootElement中的Token StartElement将导致无效的XML文档。如果要编写XML片段,请确保将ConformanceLevel设置设置为ConformanceLevel.Fragment或ConformanceLevel.Auto。“
考虑到之前的元素已被关闭,我不确定为什么会这样做。我试图寻找一个writer.WriteEndRootElement,但我没有看到任何内容。任何建议让它工作? =)
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
解决方案
XML文档只能有一个根元素。您正在启动文档,编写“标题”。元素,关闭“标题”元素,然后开始一个新的“变量” element - 这将是第二个根元素。
将两个“标题”括起来和“变量”在一个更高级别的元素中,或者将其中一个移到另一个元素中。
其他提示
您可以尝试这样的事情
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
不隶属于 StackOverflow