我正在尝试将我拥有的对象序列化为XmlDocument(然后将其保存到文件中)。问题是当我以十六进制表示(使用UltraEdit)查看文件时,某些十六进制字符似乎放在实际的xml前面。我的另一个程序正在读取这些字符,这会导致问题。
第一行包含此内容(通知前导
):
<?xml version="1.0" encoding="utf-8"?>
我不确定为什么我会收到那些角色 创建文档的代码:
' At this point, I have an object called newObj that has mostly string/integer fields.
' It is non-null as populated with the correct data.
xd = New XmlDocument
Dim xs As XmlSerializer = New XmlSerializer(GetType(MyObj))
Dim result As String = String.Empty
Using ms As MemoryStream = New MemoryStream()
xs.Serialize(ms, newObj)
ms.Position = 0
result = New StreamReader(ms).ReadToEnd()
End Using
xd.LoadXml(result)
然后我在这里创建文件:
Using xw As XmlTextWriter = New XmlTextWriter(myFile, New UTF8Encoding(True))
xw.Formatting = Formatting.Indented
xw.Indentation = 1
xw.IndentChar = " "
xd.Save(xw)
End Using
答案 0 :(得分:0)
不确定这会有多大帮助,但我之前已经看过这个文件的编码不是你期望的那样。即使您已将其设置为UTF8,生成的文件也会显示为其他内容。
在文本编辑器中检查生成的文件,该编辑器显示编码并查看它是否符合预期。
我遇到的问题是原始文件中的某些字符强制保存功能补偿和更改编码。