如何在序列化时跳过xml声明?

ora*_*nge 15 c# xml serialization

我试图输出一个没有xml头的xml文件,就像我试过的那样:

Type t = obj.GetType();
XmlSerializer xs=new XmlSerializer(t);
XmlWriter xw = XmlWriter.Create(@"company.xml",
                                        new XmlWriterSettings() { OmitXmlDeclaration = true, Indent = true });
xs.Serialize(xw,obj);
xw.Close();
Run Code Online (Sandbox Code Playgroud)

但它仍然在xml文件中输出.我不想要字符串技巧.有任何想法吗?

Die*_*ego 22

设置ConformanceLevelFragment,像这样:

Type t = obj.GetType();
XmlSerializer xs=new XmlSerializer(t);
XmlWriter xw = XmlWriter.Create(@"company.xml",
                              new XmlWriterSettings() { 
                                   OmitXmlDeclaration = true
                                   , ConformanceLevel = ConformanceLevel.Auto
                                   , Indent = true });
xs.Serialize(xw,obj);
xw.Close();
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,但是我收到了这个错误:System.InvalidOperationException:无法在使用ConformanceLevel.Fragment创建的writer上调用WriteStartDocument. (10认同)
  • @orange我抛出了同样的异常,但设置`OmitXmlDeclaration = true`并显式设置`ConformanceLevel = ConformanceLevel.Auto`得到了预期的结果. (8认同)