2012-10-25 65 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

相關問題