c# - ASP.NET Web API 和 XML 序列化
问题描述
我正在开发一个 Web API,我有一个如下模型:
public class Customer
{
[XmlElement]
public string Name { get; set; }
[XmlElement]
public decimal Age { get; set; }
}
我的控制器是:
public class CustomerController : ApiController
{
public Customer Get()
{
return new Customer {Name="Mike",Age=22.0M };
}
}
}
当我设置 accept:application/xml 我的结果是:
<?xml version="1.0" encoding="utf-8"?>
<Customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>Mike</Name>
<Age>22.0</Age>
</Customer>
当我为客户开发它时,我需要我的 xml 是:
<?xml version="1.0" encoding="utf-8"?>
<cu:Customer xmlns:cu="http://www.mywebsite.com/test">
<Name>Mike</Name>
<Age>22.0</Age>
</cu:Customer>
如果我创建一个XmlSerializer
并手动调用Serialize
函数然后将结果作为字符串返回,我可以做到这一点,但我需要该函数将 Customer 作为返回值返回。
解决方案
尝试以下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
namespace ConsoleApplication128
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add("cu", "http://www.mywebsite.com/test");
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter writer = XmlWriter.Create(FILENAME, settings);
XmlSerializer serializer = new XmlSerializer(typeof(Customer));
CustomerController controller = new CustomerController();
serializer.Serialize(writer, controller.Get(), namespaces);
}
}
public class ApiController
{
}
public class CustomerController : ApiController
{
public Customer Get()
{
return new Customer { Name = "Mike", Age = 22.0M };
}
}
[XmlRoot(ElementName = "Customer", Namespace = "http://www.mywebsite.com/test")]
public class Customer
{
[XmlElement(Namespace = "")]
public string Name { get; set; }
[XmlElement(Namespace = "")]
public decimal Age { get; set; }
}
}
推荐阅读
- algorithm - 相对于其他两个点的位置移动一个点的算法,
- python - 本地 python 包安装不再复制包?
- sql - Presto SQL:“日期”的占位符,必须大于任何其他日期
- c# - AddForceExplosion 仅影响 y 轴统一
- monetdb - MonetDB 设置特定的嵌入式 python 版本
- mysql - 如何从文本文件中删除特殊字符
- database - python - 如何使用PyMongo有条件地从一个集合中复制字段并将它们添加到MongoDB中的另一个?
- laravel - 如何查询存储在数据库中的会话
- javascript - 模拟类中的静态属性未定义?(笑话)
- python - 为什么 xgboost.get_booster().get_score() 不为其中一个变量返回任何值?