xmlwriter vb.net에서 새 요소를 생성하지 않습니다
문제
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
제휴하지 않습니다 StackOverflow