use*_*591 5 xml asp.net-mvc xmlserializer asp.net-mvc-4 asp.net-web-api
使用Framework 4.0 Wanted XML only输出Web API,因此从formatters集合中删除了JSON格式化程序.现在,我想修改XMLSerializer输出的标准XML:
<?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>
Run Code Online (Sandbox Code Playgroud)
我想更改"Arrayof"节点以说出更有意义的节点,并且需要在"Arrayof"节点上方添加更多节点(带有额外信息).
是否有捷径可寻?或者我是否必须编写自定义格式化程序/ seralizer?
我想更改"Arrayof"节点以说出更有意义的节点,并且需要在"Arrayof"节点上方添加更多节点(带有额外信息).
如果您想要对XML进行这种自定义,则应使用XmlSerializer而不是XmlFormatter中默认使用的DataContractSerializer.
config.Formatters.XmlFormatter.UseXmlSerializer = true;
Run Code Online (Sandbox Code Playgroud)
然后,您可以将Category的集合包装到类中,并使用[XmlRoot],[XmlElement]和[XmlArray]来自定义元素名称.这是一个例子:
[XmlRoot(ElementName = "node")]
public class Node
{
[XmlElement(ElementName= "SomeInfo")]
public string Node1;
[XmlElement(ElementName = "OtherInfo")]
public string Node2;
[XmlArray("Categories")]
public List<Category> CatList;
}
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅此MSDN文章: 使用属性控制XML序列化.
| 归档时间: |
|
| 查看次数: |
1640 次 |
| 最近记录: |