修改XmlElement如何在C#中序列化(System.Xml.Serialization)

时间:2019-01-24 11:33:03

标签: xml serialization c#-4.0 annotations attributes

让我们说我有一个SomeDTO类,我想在主函数中进行序列化:

[XmlElement(MethodCall)]
public class SomeDTO
{
  [XmlElement("AllowStereo")]
  bool? UseStereo {get; set;}

  [XmlElement("Kg")]
  int? Weight{get; set;}
}

static Main()
{
  var methodCall = new SomeDTO();
  methodCall.UseStereo =  true;

  XmlSerializer serializer = new XmlSerializer(typeof(SomeDTO));
  var stream = new MemoryStream();
  var writer = new StreamWriter(stream);
  serializer.serialize(writer, methodCall);
  //Code to display the stream
}

我如何影响UseSecondChannel如何转换为xml?

我想要以下形式的输出:

<methodcall>
  <member>
    <name>AllowStereo<\name>
    <value><boolean>1<\boolean><value>
  <\member>
<\methodcall>

我们有一个用例,其中我们使用xmlrpc交换消息。每个DTO代表一个特定的RPC。业务逻辑中的类用于填充DTO。

我找不到任何以所需方式影响XmlElementAttribute功能的方法。我曾期望找到一个构造函数参数或要覆盖的虚函数。

此外,我在System.Xml.Serialization命名空间中找不到其他与Xml相关的属性,可以帮助我将简单的Element转换为嵌套元素。

DTO包含许多属性,但是只有那些“集合”应该显示在XML中。在主程序中未设置权重,因此不应以XML显示。

实际结果:

<methodcall>
  <AllowStereo>1><\AllowStereo>
<\methodcall>

0 个答案:

没有答案