2012-10-24 110 views
5

使用帶有Framework 4.0的Web API進行遊玩 僅限希望的XML輸出,因此從格式化程序集合中刪除了JSON格式程序。 現在,我想修改標準的XML XmlSerializer的是輸出:自定義XML輸出?

<?xml version="1.0"?> 
-<ArrayOfCategory xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">- 
    <Category> 
    <Id>1</Id> 
    <Name>Drink</Name> 
    </Category>- 
    <Category> 
    <Id>2</Id> 
    <Name>Snack</Name> 
    </Category> 
</ArrayOfCategory> 

我想改變「Arrayof」節點說更有意義,並需要添加一對夫婦更多的節點(有額外的信息)在「Arrayof」節點上方。

有沒有簡單的方法來做到這一點?還是必須寫一個自定義格式化器/ seralizer?

+0

這僅僅是不可能的嗎?還是我錯過了明顯的東西?還是這麼新,沒有人知道解決方案呢? GOT是定製默認輸出的一種方式。 – user1771591

回答

7

我想更改「Arrayof」節點以表示更有意義的內容,並且需要在「Arrayof」節點上添加更多的節點(包含額外信息)。

如果你想這種你的XML定製的,你應該使用XmlSerializer的而不是在情況下,XMLFormatter默認使用的的DataContractSerializer的。

config.Formatters.XmlFormatter.UseXmlSerializer = true; 

然後,你可以用你的分類收集成一個類,並使用[XmlRoot],[的XmlElement]和[XmlArray]自定義的元素名稱。這裏有一個例子:

[XmlRoot(ElementName = "node")] 
public class Node 
{ 
    [XmlElement(ElementName= "SomeInfo")] 
    public string Node1; 

    [XmlElement(ElementName = "OtherInfo")] 
    public string Node2; 

    [XmlArray("Categories")] 
    public List<Category> CatList; 
} 

欲瞭解更多信息,可以參考這個MSDN文章:Controlling XML Serialization Using Attributes

+0

謝謝,瑪姬。我已經切換到XMLSerializer。剛纔找到了一個例子來做到這一點。但謝謝你的迴應! – user1771591