从.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中删除命名空间[重复]的主要内容,如果未能解决你的问题,请参考以下文章