gpt4 book ai didi

asp.net-mvc - 如何在asp.net web api中将xml序列化为所需的格式

转载 作者:行者123 更新时间:2023-12-02 07:38:57 24 4
gpt4 key购买 nike

我正在研究 asp.net mvc 4 web api。我有一个类似的类(class),

public class Quiz
{
public int QuizId{get; set;}
public string title{get; set;}
...
...
}

现在我正在尝试检索测验列表,所以我写道,

public List<Quiz> GetQuizs()
{
return repository.ListQuizs();
}

我需要 xml 响应,因此我在 webapi.config 文件中进行了配置,例如,

config.Formatters.XmlFormatter.UseXmlSerializer = true;

我得到了这样的回复,

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

但我想要像这样的响应

<Quizs>
<Quiz>
<QuizId>4</QuizId>
<title>Master Minds</title>
</Quiz>
<Quiz>
<QuizId>5</QuizId>
<title>Master Minds</title>
</Quiz>
</Quiz>

我尝试过,

public class quizs:List<Quiz>{}
public class Quiz
{
//properties here
}

但我无法将测验列表加载到测验类中。请指导我。

最佳答案

您使用 XmlSerializer 而不是 DataContract 序列化器有什么原因吗?

如果没有,你可以像这样实现你想要的:

  1. 删除 config.Formatters.XmlFormatter.UseXmlSerializer = true;从你的配置中
  2. 添加对 System.Runtime.Serialization 的引用
  3. 声明您的类和 Controller

代码

[DataContract(Namespace = "")]
public class Quiz
{
[DataMember]
public int QuizId { get; set; }
[DataMember(Name = "title")]
public string Title { get; set; }
}

[CollectionDataContract(Name = "Quizs", Namespace = "")]
public class QuizCollection : List<Quiz>
{
}

public class QuizsController : ApiController
{
public QuizCollection Get()
{
return new QuizCollection
{
new Quiz {QuizId = 4, Title = "Master Minds"},
new Quiz {QuizId = 5, Title = "Another Title"}
};
}
}

最后使用 html header “accept : application/xml”调用您的服务

你的结果应该是这样的:

<Quizs xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Quiz>
<QuizId>4</QuizId>
<title>Master Minds</title>
</Quiz>
<Quiz>
<QuizId>5</QuizId>
<title>Another Title</title>
</Quiz>
</Quizs>

关于您的命名空间 注意。如何将它们设置为属性中的namespace = ""以删除它们。您将努力删除 xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 它需要存在以允许 XML 处理空值。

有关集合的数据契约序列化器支持的更多信息,请参阅 here

关于asp.net-mvc - 如何在asp.net web api中将xml序列化为所需的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13739528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com