我有以下XML和从中序列化的类:
<Alerts>
<io id="1">
<name>Foo</name>
<status>Active</status>
</io>
<io id="2">
<name>Bar</name>
<status>Inactive</status>
</io>
</Alerts>
[XmlRoot("Alerts")]
[Serializable]
public class Alerts
{
[XmlElement("io")]
public List<Alert> { get; set; }
}
public class Alert
{
[XmlElement("name")]
public string Name { get; set; }
[XmlElement("status")]
public string Status { get; set; }
}
我需要的是我的Alert
类中的属性,在反序列化时包含其节点的XML。例如,在反序列化提供的XML之后,我最终得到了2个Alert
对象的列表。我需要第一个警报,让一个属性包含这个字符串:
<io id="1">
<name>Foo</name>
<status>Active</status>
</io>
我是如何实现这一目标的?
答案 0 :(得分:0)
我认为实际完成此操作的唯一方法是使用字符串属性,然后在xml中用实体字符引用替换xml保留字符,这样它就不会被序列化为xml。所以你的xml看起来像:
<io id="1">
<name>Foo</name>
<status>Active</status>
<innerAlert>
<io id="3"><name>FooBar</name><status>Inactive</status><innerAlert></innerAlert></io>
</innerAlert>
我仍然继续回到我的评论,并认为你可能最好在Alert类中添加一个Alert或IEnumerable类型的属性,然后让树一直向下反序列化,但也许这不是一个选项。你。