您现在的位置是:网站首页>编程语言
在XML序列化时怎么去除默认命名空间xmlns:xsd和xmlns:xsi
【编程语言】阿文2020年4月09日690浏览
简介在上篇文章中介绍了在XML序列化时编码问题,我们解决了encoding="utf-8"的问题,现在我们还遇到命名空间的问题:xmlns:xsi和xmlns:xsd一般得到的xml文件不想在其他系统各种遇到奇异的问题,我们可以使用以下方式解决:
在上篇文章中介绍了在XML序列化时编码问题,我们解决了encoding="utf-8"的问题,现在我们还遇到命名空间的问题:xmlns:xsi和 xmlns:xsd 一般得到的xml文件不想在其他系统各种遇到奇异的问题,我们可以使用以下方式解决:
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlSerializer slz = new XmlSerializer(someType);
slz.Serialize(myXmlTextWriter, someObject, ns);
完整的序列化解决方法:
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
System.Xml.Serialization.XmlSerializerNamespaces ns = new System.Xml.Serialization.XmlSerializerNamespaces();
ns.Add("", "");
System.IO.MemoryStream stream = new System.IO.MemoryStream();
System.Xml.XmlWriterSettings setting = new System.Xml.XmlWriterSettings();
setting.Encoding = new UTF8Encoding(false);
setting.Indent = true;
using (System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(stream, setting))
{
xs.Serialize(writer, obj, ns);
}
return Encoding.UTF8.GetString(stream.ToArray());
评论文明上网,理性发言0条评论