在 .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中文网其他相关文章!