首页 >后端开发 >C++ >如何从 .NET 中的序列化 XML 中删除所有命名空间?

如何从 .NET 中的序列化 XML 中删除所有命名空间?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-04 04:23:43848浏览

How to Remove All Namespaces from Serialized XML in .NET?

从 .NET 中的序列化 XML 中删除所有命名空间

在将对象序列化为 XML 的过程中,经常会遇到这样的命名空间作为附加到序列化文档的“xsi”和“xsd”。这些命名空间可能会造成混乱和复杂性。

提供的代码片段尝试通过设置 OmitXmlDeclaration 标志来省略 XML 命名空间。但是,生成的 XML 仍然包含 xsi 和 xsd 命名空间。要完全删除这些命名空间,需要执行额外的步骤。

解决方案在于定义一个空的 XmlSerializerNamespaces 对象并将其传递给 Serialize 方法:

...
XmlSerializer s = new XmlSerializer(objectToSerialize.GetType());
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");  // Add an empty namespace for each prefix
s.Serialize(xmlWriter, objectToSerialize, ns);

此代码将一个空的命名空间添加到XML 文档,有效地删除任何前缀或命名空间声明。结果,序列化文档将包含干净的。没有任何命名空间属性的标签:

<message>
 ...
</message>

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

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