5

Herumspielen mit der Web-API mit Framework 4.0 Wanted XML nur ausgegeben, so entfernt der JSON-Formatierer aus der Formatierer Sammlung. Jetzt , würde Ich mag die Standard-XML ändern, die die XMLSerializer ausgibt:Benutzerdefinierte XML-Ausgabe?

<?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> 

Ich möchte die „Arrayof“ Knoten ändern, etwas Sinnvolles zu sagen haben, und brauchen ein paar mehr Knoten hinzufügen (mit zusätzlichen Informationen) über dem Knoten "Arrayof".

Gibt es eine einfache Möglichkeit, dies zu tun? Oder muss ich einen benutzerdefinierten Formatierer/Seralizer schreiben?

+0

Ist das nicht möglich? Oder fehlt mir etwas Offensichtliches? oder ist es so neu, kennt niemand eine lösung? Es gibt GOT, um die Standardausgabe anzupassen. – user1771591

Antwort

7

Ich möchte die „Arrayof“ Knoten zu ändern, etwas Sinnvolles zu sagen haben, und brauchen ein paar mehr Knoten (mit Zusatzinformationen) über dem „Arrayof“ Knoten hinzuzufügen.

Wenn Sie diese Art von Anpassung Ihrer XML wollen, sollten Sie die XmlSerializer anstelle des DataContractSerializer verwenden, die standardmäßig in der XMLFormatter verwendet wird.

config.Formatters.XmlFormatter.UseXmlSerializer = true; 

Dann können Sie Ihre Sammlung von Kategorie in eine Klasse wickeln und mit [XmlRoot], [XmlElement] und [XmlArray] den Namen des Elements anzupassen. Hier ein Beispiel:

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

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

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

Für mehr Informationen, Sie in diesem MSDN-Artikel verweisen: Controlling XML Serialization Using Attributes.

+0

Danke, Maggie. Ich war bereits zum XMLSerializer gewechselt. Habe gerade ein Beispiel dafür gefunden. Aber danke für die Antwort! – user1771591