C# 将XML序列化为导致畸形的文件?
我正在尝试序列化XML并创建一个文件。我正在从一个使用XSD.exe从XSD自动生成的对象序列化。该文件可以正常处理和创建。但是每当我在验证工具上运行它时,我就会得到一个错误Prolog中不允许的内容 我猜在xml声明之前有一些格式错误的字符,但我看不到它们,也看不到任何字节。以下是我序列化和创建XML文档的代码:C# 将XML序列化为导致畸形的文件?,c#,xml,serialization,xml-serialization,C#,Xml,Serialization,Xml Serialization,我正在尝试序列化XML并创建一个文件。我正在从一个使用XSD.exe从XSD自动生成的对象序列化。该文件可以正常处理和创建。但是每当我在验证工具上运行它时,我就会得到一个错误Prolog中不允许的内容 我猜在xml声明之前有一些格式错误的字符,但我看不到它们,也看不到任何字节。以下是我序列化和创建XML文档的代码: XmlSerializer ser = new XmlSerializer(typeof(ContinuityOfCareRecord)); XmlWrite
XmlSerializer ser = new XmlSerializer(typeof(ContinuityOfCareRecord));
XmlWriterSettings settings = new XmlWriterSettings()
{
Encoding = Encoding.UTF8,
ConformanceLevel = ConformanceLevel.Document,
OmitXmlDeclaration = false,
Indent = true,
NewLineChars = "\n",
CloseOutput = true,
NewLineHandling = NewLineHandling.Replace,
CheckCharacters = true
};
using (XmlWriter myWriter = XmlWriter.Create(ms, settings))
{
myWriter.Flush();
//myWriter.WriteProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"ccr.xsl\"");
ser.Serialize(myWriter, myCCR);
}
看起来很简单,但如果输出XML文件的开头有格式错误的字符,如何删除这些字符
XML文档的开头是这样的:
testccr
看起来是正确的,但验证器就是不喜欢它。我一整天都在办公桌上忙这个,所以任何示例代码都会非常有用
谢谢看起来BOM字符有问题,以这种方式编写代码有助于:
using (XmlTextWriter myWriter = new XmlTextWriter(ms, new System.Text.UTF8Encoding(false)))
{
myWriter.Flush();
//myWriter.WriteProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"ccr.xsl\"");
ser.Serialize(myWriter, myCCR);
}
这将删除BOM字符,文件将以UTF-8编码,而不包含BOM。您运行的验证工具是什么?您能将XML反序列化回C#中的对象而不出错吗?我遗漏了什么吗?我以为您无法创建XMLWriter的实例。实际上,我在那条线上遇到了一个错误。。