Pergunta

Eu estou escrevendo um arquivo XML usando VB.net. Quando tento criar um outro elemento a ser escrito após o primeiro, ele erros fora, dizendo:

"token startElement no estado EndRootElement resultaria em um documento XML inválido. Certifique-se de que a definição ConformanceLevel está definido para ConformanceLevel.Fragment ou ConformanceLevel.Auto se você quer escrever um fragmento XML."

Eu não estou certo porque ele está fazendo isso considerando que o elemento anterior foi fechada. Eu tentei olhar para um writer.WriteEndRootElement, mas eu não vi nenhum lá. Todas as sugestões para fazê-lo funcionar? =)

    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
Foi útil?

Solução

Um documento XML pode ter apenas um elemento raiz. Você está começando o documento, escrevendo o elemento "header", fechando o elemento "header", em seguida, iniciar uma nova "variável" elemento -. O que seria um segundo elemento raiz

De qualquer incluir tanto "cabeçalho" e "variável" dentro de um único elemento de nível mais elevado, ou mover-se uma delas no interior da outra.

Outras dicas

Você pode tentar algo como isto

 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top