最简单的方法是对您的对象执行简单的获取,以获取要发回的 XML 示例。
要记住的事情:
- 包括
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
指示空值所需的命名空间
- 如果使用标准 XML 序列化器配置,您也需要命名空间,例如
xmlns="http://schemas.datacontract.org/2004/07/MvcApplication10.Controllers"
- 执行 get 时将接受标头设置为
accept: application/xml
- 发布到控制器时设置内容类型。
content-type: application/xml
使用示例对象和控制器。
public class Foo
{
public string Bar { get; set; }
}
public class FoosController : ApiController
{
// GET api/foos
public Foo Get()
{
return new Foo { Bar = "Test" };
}
// GET api/foos
public Foo Post(Foo test)
{
return test;
}
}
我在 /api/foos 上执行 GET 并获得一个示例对象:
User-Agent: Fiddler
Host: localhost
accept: application/xml
回复:
<Foo xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MvcApplication10.Controllers"><Bar>Testing</Bar></Foo>
要将其发回,我只需将内容类型标头更改为 xml 中的值并将其发回:
User-Agent: Fiddler
Host: localhost:61280
content-type: application/xml
Content-Length: 167
要求
<Foo xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MvcApplication10.Controllers"><Bar>Testing Response</Bar></Foo
回复
<Foo xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MvcApplication10.Controllers"><Bar>Testing Response</Bar></Foo>
更新
对于复杂的 XML 模型,您需要开始使用 DataContract 注释http://msdn.microsoft.com/en-us/library/ms731045.aspx。
例子:
[DataContract(Name = "Person")]
public class Foo
{
[DataMember(Name = "Address", IsRequired = False)]
public string Bar { get; set; }
}
这会改变所需的 XML
<Person xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MvcApplication10.Controllers"><Address>Testing Response</Address></Person>
对于收藏等看这里http://msdn.microsoft.com/en-us/library/aa347850.aspx