这里的许多 C# XML 序列化示例都包含类似的代码
xml = xml.Substring(xml.IndexOf(Convert.ToChar(60)));
xml = xml.Substring(0, (xml.LastIndexOf(Convert.ToChar(62)) + 1));
我知道这是丢弃 < 和 > 周围的任何(不可打印/无效)字符,但为什么这些字符首先存在?
假设 UTF16 使用 Encoding.Unicode 和 XmlTextWriter。
最佳答案
Assume UTF16 using Encoding.Unicode with an XmlTextWriter.
UTF 格式实际上并不是 XmlTextWriter 的构建者。如果向 XmlTextWriter 提供一个包含 xml 变量的 StringReader,则问题可能存在于最初从磁盘读取 xml 的方式中。
文本文件通常包含称为 BOM ( Byte Order Mark ) 的编码前导码。当读取错误时,文件内容前会出现几个“奇怪”的字符。
我希望您的代码是一个穷人尝试从错误读取的文本文件中删除 BOM 的尝试。
关于c# - 为什么许多 XML 序列化示例会去除特定字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6934101/