Xml将一个类的实例序列化/反序列化为'xml格式

本文关键字:反序列化 格式 xml 序列化 实例 一个 Xml | 更新日期: 2023-09-27 18:02:24

我有一个简单的类:

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>

我已经尝试了列表属性上的Xml*属性的各种组合,但它总是想写父元素(SomeStrings)。

在不实现IXmlSerializable接口的情况下,是否有一种方法可以修改类来实现我想要的结果?

Xml将一个类的实例序列化/反序列化为'xml格式

尝试使用[XmlElement]属性:

public class SomeClass
{
    public int SomeInt { get; set; }
    public string SomeString { get; set; }
    [XmlElement]
    public List<string> SomeStrings { get; set; }
}