首页 >后端开发 >C++ >如何从 .NET 中的 XML 序列化对象中消除命名空间属性?

如何从 .NET 中的 XML 序列化对象中消除命名空间属性?

Patricia Arquette
Patricia Arquette原创
2025-01-02 18:39:39563浏览

How to Eliminate Namespace Attributes from XML Serialized Objects in .NET?

在 .NET 中的对象序列化期间消除命名空间属性

在 .NET 中将对象序列化为 XML 时,经常会遇到不需要的命名空间生成的文档中的属性,例如“xmlns:xsi”和“xmlns:xsd”。这些属性可能会使输出混乱并干扰进一步处理。

删除这些命名空间的一种方法是将 XmlWriterSettings.OmitXmlDeclaration 属性指定为 true。但是,仅此方法可能还不够,因为它仅抑制 XML 声明行,而不抑制命名空间属性。

要解决此问题并显式删除 xsi 和 xsd 命名空间,我们可以使用 XmlSerializerNamespaces 类。此类允许我们指定自定义名称空间映射。在我们的例子中,我们可以创建 XmlSerializerNamespaces 的实例,并添加一个空字符串作为键和值,从而有效地覆盖任何先前定义的命名空间。

代码示例:

...
XmlSerializer s = new XmlSerializer(objectToSerialize.GetType());
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
s.Serialize(xmlWriter, objectToSerialize, ns);

通过为 XmlSerializerNamespaces 中的键和值指定空字符串,我们从序列化的 XML 文档,产生更干净的输出,仅包含所需的消息标签:

<message>
...
</message>

以上是如何从 .NET 中的 XML 序列化对象中消除命名空间属性?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn