【发布时间】:2010-06-01 14:21:46
【问题描述】:
我正在尝试将一个 xml 文件导入 vb.net XmlDocument,但出现错误:
'.',十六进制值 0x00,是无效字符。第 94 行,位置 1。
我想知道是否有办法替换十六进制字符 0x00
以下是文件在第 94 行结束的第 92、93、94 行
92 | </request>
93 |</rpc> <!-- XML Finishes here -->
94 |
感谢您的帮助。
编辑:添加用于获取文件的代码。
Dim fs As FileStream = File.Open(FileName, FileMode.Open, FileAccess.Read)
Dim buffer(fs.Length) As Byte
fs.Read(buffer, 0, fs.Length)
Dim xmlString As String = System.Text.UTF8Encoding.UTF8.GetString(buffer)
fs.close()
Doc.LoadXml(xmlString.Trim)
我正在使用 System.Text.UTF8Encoding.UTF8.GetString(buffer),因为文件编码并不总是 UTF-8。不幸的是,我无法控制 xml 文件,因为我们是从外部来源接收它的,而外部来源不会改变文件的生成方式,因为它被其他人使用。
我想要做的基本上是将文件放入字符串中,然后从最后一个 > 切掉它的末尾,然后附加我自己的 > 或者只是用空字符串替换 HEX 字符。
【问题讨论】:
-
请显示您正在使用的代码 - 最好是在十六进制编辑器中显示的文件末尾。
-
我最近用 0x00 和 0x01 得到了这个,我刚刚用 "" 替换它们......但一定有更好的方法,我很想看看每个人都有什么要说这个。看起来 XML 没问题,但是当用 SOAP 包装它时它会爆炸。
-
我同意 Jon 的观点,一些代码会有所帮助,包括您从何处获取数据。数据末尾似乎有一些垃圾字符,可能是由于读取文件的代码中的一些错误。
-
更新了用于加载 xml 文件的代码的问题。将搜索一个十六进制编辑器,看看是否也将十六进制放在那里。
-
正如我所料,又一次打断了
Read电话。这是一个常见的错误,你并不孤单。 :)
标签: .net asp.net xml vb.net hex