您现在的位置是:网站首页>编程语言

在XML序列化时怎么去除默认命名空间xmlns:xsd和xmlns:xsi

编程语言阿文2020年4月09日510浏览

简介在上篇文章中介绍了在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());


标签: .net XmlWriter C#

0

评论文明上网,理性发言0条评论