当前位置: 首页 > 编程语言 > C#

removeencodingfromxmlserializer分享

时间:2023-04-10 11:38:12 C#

removeencodingfromxmlserializer我用下面的代码创建了一个xml文档-XmlSerializerNamespacesns=newXmlSerializerNamespaces();ns.Add("","");新的XmlSerializer(typeof(docket)).Serialize(Console.Out,i,ns);这对于创建没有名称空间属性的xml文件非常有用。我猜根元素中也没有编码属性,但我找不到办法。有谁知道这是否可以做到?感谢您删除旧答案并使用新解决方案更新:假设可以完全删除xml声明,因为没有编码属性它没有多大意义:XmlSerializerNamespacesns=newXmlSerializerNamespaces();ns.Add("","");使用(XmlWriterwriter=XmlWriter.Create(Console.Out,newXmlWriterSettings{OmitXmlDeclaration=true})){newXmlSerializer(typeof(SomeType)).Serialize(writer,newSomeType(),ns);要从XML标头中删除编码,请将带有空编码的TextWriter传递给XmlSerializer:MemoryStreamms=newMemoryStream();XmlTextWriterw=newXmlTextWriter(ms,null);s.Serialize(w,vs);指示XmlTextWriter使用构造函数中传递的TextWriter编码://XmlTextWriter构造函数publicXmlTextWriter(TextWriterw):this(){this.textWriter=w;this.encoding=w.Encoding;..它在生成XML时使用此编码://来自XmlTextWriter.StartDocument的代码片段if(this.encoding!=null){builder.Append("encoding=");...带编码的字符串;使用(System.IO.MemoryStream内存=newSystem.IO.MemoryStream()){使用(System.IO.StreamWriterwriter=newSystem.IO.StreamWriter(memory)){serializer.Serialize(writer,obj,null);使用(System.IO.StreamReaderreader=newSystem.IO.StreamReader(memory)){memory.Position=0;withEncoding=reader.ReadToEnd();}}}stringwithOutEncoding=withEncoding.Replace("","");感谢这个博客帮助我编写代码http://blog.dotnetclr.com/archive/2008/01/29/removing-declaration-and-namespaces-from-xml-serialization.aspx这是我的解决方案,同样的想法,但在VB.NET中,我认为更清晰一些以上就是C#学习教程:从xmlserializer中删除代码分享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注—DimswAsStreamWriter=New,StreamWriter(req.GetRequestStream,System.Text.Encoding.ASCII)DimxSerializerAsXmlSerializer=NewXmlSerializer(GetType(T))Dimnmsp作为XmlSerializerNamespaces=NewXmlSerializerNamespaces()nmsp.Add("","")DimxWriterSettingsAsXmlWriterSettings=NewXmlWriterSettings()xWriter.OmitXmlDeclaration=TrueDimxmlWriterAsXmlWriter=xmlWriter.Create(sw,xWriterSettings)xSerializer.Serialize(xmlWriter,someObjectT,nmsp)本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: