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ドキュメントには、ルート要素を1つだけ含めることができます。ドキュメントを開始し、「ヘッダー」を作成しています。要素、「ヘッダー」を閉じます;要素、新しい"変数"の開始要素-2番目のルート要素になります。
両方の" header"を囲みますおよび「変数」単一の高レベル要素内で、またはそれらの一方をもう一方の内部に移動します。
他のヒント
このようなものを試すことができます
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