Xml将类的实例序列化/反序列化为“丑陋”的xml格式

时间:2014-05-07 15:34:27

标签: c# xml-serialization

我有一个简单的课程:

public class SomeClass
{
    public int SomeInt { get; set; }
    public string SomeString { get; set; }

    [XmlArrayItem("AString")]
    public List<string> SomeStrings { get; set; }
}

我需要将此类的实例序列化为非良好形成的xml(我无法更改)。如果我按原样序列化类,我会得到以下结果:

<?xml version="1.0" encoding="utf-8"?>
<SomeClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <SomeInt>1234</SomeInt>
  <SomeString>Hello</SomeString>
  <SomeStrings>
    <AString>One</AString>
    <AString>Two</AString>
    <AString>Three</AString>
  </SomeStrings>
</SomeClass>

我想得的是以下内容(AString元素不包含在父元素中):

<?xml version="1.0" encoding="utf-8"?>
<SomeClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <SomeInt>1234</SomeInt>
  <SomeString>Hello</SomeString>
  <AString>One</AString>
  <AString>Two</AString>
  <AString>Three</AString>
</SomeClass>

我在List属性上尝试过各种Xml *属性组合,但它总是想编写父元素(SomeStrings)。

有没有办法可以修改类来实现我想要的结果,而不是实现IXmlSerializable接口?

1 个答案:

答案 0 :(得分:0)

请改为使用[XmlElement]属性:

public class SomeClass
{
    public int SomeInt { get; set; }
    public string SomeString { get; set; }

    [XmlElement]
    public List<string> SomeStrings { get; set; }
}