没有Unicode字节顺序标记。 无法切换到Unicode

我正在用XSD编写XMLvalidation器。

下面是我做的,但是当validation器到达行时while (list.Read())它给了我错误

没有Unicode字节顺序标记。 无法切换到Unicode。

有人可以帮我解决吗?

 public class Validator { public void Validate(string xmlString) { Boolean bRet = true; string xmlPath = @"C:\x.xml"; string xsdPath = @"C:\general.xsd"; XmlReaderSettings Settings = new XmlReaderSettings(); Settings.Schemas.Add("", xsdPath); Settings.ValidationType = ValidationType.Schema; Settings.ValidationEventHandler += new ValidationEventHandler(SettingsValidationEventHandler); XmlReader list = XmlReader.Create(xmlPath, Settings); //StringBuilder output = new StringBuilder(); while (list.Read()) { } //File.WriteAllText(@"D:\Output.xml", output.ToString()); } static void SettingsValidationEventHandler(object sender, ValidationEventArgs e) { if (e.Severity == XmlSeverityType.Warning) { MessageBox.Show( "WARNING: "); MessageBox.Show(e.Message); } else if (e.Severity == XmlSeverityType.Error) { MessageBox.Show("ERROR: "); MessageBox.Show(e.Message); } } } 

XML

     

XSD

                             

文件编码的实际情况似乎与XML声明指定的内容冲突。 如果您的文件实际使用单字节字符,则声明encoding="utf-16"不会将其更改为使用双字节字符。

尝试从XML声明中删除冲突的编码。 更换

  

  

您也可以使用LoadXML()将文件加载到字符串中作为解决方法。