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接口的情况下,是否有一种方法可以修改类来实现我想要的结果?
尝试使用[XmlElement]
属性:
public class SomeClass
{
public int SomeInt { get; set; }
public string SomeString { get; set; }
[XmlElement]
public List<string> SomeStrings { get; set; }
}