質問

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top