문제

vb.net을 사용하여 XML 파일을 작성하고 있습니다. 첫 번째를 지나서 쓰기 위해 다른 요소를 작성하려고하면 다음과 같은 말이 오류가 발생합니다.

"State Endrootelement의 토큰 스타트 레미션은 유효하지 않은 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 문서는 하나의 루트 요소 만 가질 수 있습니다. 문서를 시작하고 "헤더"요소를 작성하고 "헤더"요소를 닫은 다음 새 "변수"요소를 시작합니다.이 요소는 두 번째 루트 요소입니다.

단일 하이 레벨 요소 내에서 "헤더"와 "변수"를 둘 다 묶거나 다른 하나를 다른 내부로 이동하십시오.

다른 팁

당신은 이와 같은 것을 시도 할 수 있습니다

 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