2012-10-25 67 views
2

我从MVC Web Api获取以下响应;从MVC Web API响应中删除XML名称空间属性

<Products xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="my.namespace.com"> 
<Product> 
<Id>1</Id> 
<Name>Tomato Soup</Name> 
<Category>Groceries</Category> 
<Price>1</Price> 
</Product> 
<Product> 
<Id>2</Id> 
<Name>Yo-yo</Name> 
<Category>Toys</Category> 
<Price>3.75</Price> 
</Product> 
<Product> 
<Id>3</Id> 
<Name>Hammer</Name> 
<Category>Hardware</Category> 
<Price>16.99</Price> 
</Product> 
</Products> 

我想删除xmlns:*标记。

我发现了各种帖子,其中包括一些提供选项的SO,但这些似乎不起作用。

我试过的东西;

[XmlRoot("Products",Namespace = "my.namespace.com")] 
    [DataContract(Namespace = "")] 
    public class ProductsModel : List<Product> 
    { 
    } 

[XmlRoot("Product")] 
    [DataContract(Namespace = "", Name = "Product")] 
    public class Product 
    { 
     [DataMember] 
     public int Id { get; set; } 

     [DataMember] 
     public string Name { get; set; } 

     [DataMember] 
     public string Category { get; set; } 

     [DataMember] 
     public decimal Price { get; set; } 
    } 

GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true; 

这些都没有影响。

回答

2

而不是DataContract,使用CollectionDataContract,而不启用XmlSerializer

+0

关闭。更新CollectionDataContract并禁用序列化程序将删除xmlns:xsd标记,但不会删除xmlns:xsi标记。我已经用该代码更新了该问题。 – ChrisBint

+0

你为什么要删除这个属性?你的XML是一个模式实例,不是吗? – danludwig

+0

我的个人喜好。 – ChrisBint

相关问题