从.NET中生成的XML中删除命名空间[重复]

Posted

技术标签:

【中文标题】从.NET中生成的XML中删除命名空间[重复]【英文标题】:Remove namespace from generated XML in .NET [duplicate] 【发布时间】:2011-02-26 09:32:44 【问题描述】:

可能重复:XmlSerializer: remove unnecessary xsi and xsd namespaces

我正在使用 XMLSerializer 和一个用属性标记的类来生成一些 XML。此 XML 被发送到 REST Web 服务。

它会生成以下 XML:

<?xml version="1.0" encoding="utf-8"?>
<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <first-name>API</first-name>
  <last-name>TestPersonDeleteMe</last-name>
  <title>Delete me</title>
</person>

一切都会好的,除了我使用的网络服务不理解架构内容并引发 500 错误。

有没有办法阻止 XmlSerializer 将 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"' 添加到 person 标记?

【问题讨论】:

这不是我的网络服务。 不会改变它被破坏的事实。做点什么吧。 是的,我会尝试将其报告为一个错误,即接受 xml 输入但无法处理 xml 命名空间属性的 Web 服务已损坏。最坏的情况是它应该忽略它们。 我已举报,但仍希望有人回答我的问题。我等不及他们修复它了。 @BenRobinson 是的——人们的网络服务坏了。我刚来这里是因为如果 XML 有命名空间,解析 XML 也会遇到同样的问题。哼哼。 【参考方案1】:

如果你使用自定义序列化器试试这个

XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add(string.Empty, string.Empty);

然后将命名空间对象添加到您的序列化程序。

【讨论】:

以上是关于从.NET中生成的XML中删除命名空间[重复]的主要内容,如果未能解决你的问题,请参考以下文章

SQL 中 XML 命名空间的重复

如何从杰克逊 XML 解析中删除命名空间定义

从 WCF RESTful 响应中删除 xml 命名空间

如何从 XML 元素中删除一个特定的命名空间

如何从输出 xml 中删除命名空间?

xml 从元素中删除命名空间