加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

自定义XML输出?

发布时间:2020-12-16 23:16:03 所属栏目:百科 来源:网络整理
导读:使用Framework 4.0来使用Web API 通缉 XML仅输出,因此从formatters集合中删除了 JSON格式化程序. 现在,我想修改XMLSerializer输出的标准XML: ?xml version="1.0"?-ArrayOfCategory xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.
使用Framework 4.0来使用Web API
通缉 XML仅输出,因此从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>

我想更改“Arrayof”节点以说出更有意义的节点,并且需要在“Arrayof”节点上方添加更多节点(带有额外信息).

是否有捷径可寻?或者我是否必须编写自定义格式化程序/ seralizer?

解决方法

I’d like to change the “Arrayof” node to say something more meaningful,and need to add a couple more nodes (with extra information) above the “Arrayof” node.

如果您想要对XML进行这种自定义,则应使用XmlSerializer而不是XmlFormatter中默认使用的DataContractSerializer.

config.Formatters.XmlFormatter.UseXmlSerializer = true;

然后,您可以将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;
}

有关详细信息,请参阅此MSDN文章:Controlling XML Serialization Using Attributes.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读