将类序列化为xml

时间:2013-12-16 19:20:31

标签: c# xml serialization

我正在尝试将对象(类)序列化为Xml,因为我需要将它发送到JDE Business Function。 当我需要像这样代表一个arraylist时,我遇到了问题:

<params>
<param name='szGroup'>val1</param>
<param name='szOWPassword'>val2</param>
...
</params>

在我的课上我创造了这个:

...
[XmlArray("params")]
[XmlArrayItem("param")]
public List<Param> Param {get; set;}
...

public class Param
{
    [XmlAttribute("name")]
    public string Name { get; set; }
}

但我明白了:

<params>
  <param name="szGroup" />
  <param name="szOWPassword" />...

任何人都可以帮我这个吗?

2 个答案:

答案 0 :(得分:4)

使用XmlText属性:

public class Param
{
    [XmlAttribute("name")]
    public string Name { get; set; }

    [XmlText]
    public string Value { get; set; }
}

答案 1 :(得分:0)

根据您需要序列化的方式,在您的情况下继承XmlTextWriter以更好地控制序列化可能是明智的。如果你必须拥有完整的结尾元素,这是实现这一目标的最简单方法之一:

public class MyXmlTextWriter : XmlTextWriter
{
  public MyXmlTextWriter(TextWriter writer) : base(writer) { }

  public override void WriteEndElement()
  {
    base.WriteFullEndElement();
  }

  // Override any additional XML serialization methods.
}

然后你只需要实例化MyXmlTextWriter并使用它来序列化你的XML。