Das serialisieren von xml-Daten in gewünschtes format in asp.net web-api
Arbeite ich auf asp.net mvc 4 web api. Ich habe eine Klasse wie,
public class Quiz
{
public int QuizId{get; set;}
public string title{get; set;}
...
...
}
bin ich jetzt beim abrufen der Liste der quizs, also schrieb ich wie,
public List<Quiz> GetQuizs()
{
return repository.ListQuizs();
}
brauche ich xml-Antwort so habe ich mir vorgenommen-Konfiguration in webapi.config-Datei wie
config.Formatters.XmlFormatter.UseXmlSerializer = true;
und ich bekam eine Antwort wie,
<ArrayOfQuiz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Quiz>
<QuizId>4</QuizId>
<title>Master Minds</title>
</Quiz>
<Quiz>
<QuizId>5</QuizId>
<title>Master Minds</title>
</Quiz>
</ArrayOfQuiz>
aber ich möchte die Antwort gerne
<Quizs>
<Quiz>
<QuizId>4</QuizId>
<title>Master Minds</title>
</Quiz>
<Quiz>
<QuizId>5</QuizId>
<title>Master Minds</title>
</Quiz>
</Quiz>
habe ich versucht wie,
public class quizs:List<Quiz>{}
public class Quiz
{
//properties here
}
aber ich bin nicht in der Lage zu laden, Liste von quizs in quizs Klasse. bitte führe mich.
InformationsquelleAutor Karthik Bammidi | 2012-12-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es einen Grund, warum Sie mit dem XmlSerializer über das DataContract-serialiszer?
Wenn nicht, können Sie das erreichen, was Sie wollen, etwa so:
Code
Schließlich rufen Sie Ihren service-mit dem html-header "accept : application/xml"
Und Ihr Ergebnis sollte wie:
Bezüglich Ihres namespaces NB. wie Sie gesetzt sind, um die namespace = "" - Attribute, um Sie zu entfernen. Sie gehen zu strugle zu entfernen
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
es braucht, um es zu ermöglichen, die XML verarbeiten null-Werte.Weitere Informationen über das datacontract-serialisierungsprogramme Unterstützung für Sammlungen finden Sie unter hier
InformationsquelleAutor Mark Jones
Können Sie den namespace. Erstellen Sie einfach eine CustomXmlFormatter um den namespace zu entfernen aus dem root-element.
InformationsquelleAutor P...P...
Erstellen Sie eine Klasse namens QuizList und IXmlSerializable implementieren, und Sie können genau definieren, wie Sie möchten, dass Ihre XML zu schauen.
IMHO ist es eine wirklich schlechte Idee zu entlarven Draht-Formate, die abhängig von der internen Implementierungen ein .Net-Typ serializer. Die ganze Idee von serialisierungsprogramme ist, dass, wenn Sie wollen, zu Deserialisieren das Objekt, das Sie brauchen, um die gleiche serializer library und die gleichen Typen zur Verfügung, um die Wiederherstellung des Objekts. Was passiert, wenn Ihr Kunde nicht auf die .net-Plattform?
Wenn Sie haben die Kontrolle über die Klasse, die Umsetzung
IXmlSerializable
ist übertrieben.Draht-Formate sollten entweder vollständig unter Ihrer Kontrolle oder definiert werden durch eine offene Spezifikation. Abhängigkeit von einem Anbieter der privaten Durchführung ist ein Rezept für künftige Schmerzen.
nicht wirklich reden über das format. Behandelt, durch Medien-Typ formatter. Wir reden über domain-Implementierung.
IMO-Web-API-Controller Signaturen sind nicht eine Domäne betreffen und domain-Objekten sollte sicherlich nicht übertragen werden über die Leitung.
InformationsquelleAutor Darrel Miller