我是.NET的新手,我需要将XML序列化为对象。
如何编写Field.cs
以便可以为以下XML序列化?
<root>
<field name="title">
<value>Title 1</value>
</field>
<field name="body">
<value>
<div>
Nested HTML markups with all possible elements.
<p> A para here</p>
<a href="#">A link here</a>
<section>any possible html elements</section>
</div>
</value>
</field>
</root>
这是我到目前为止所做的事情:
[XmlRoot(ElementName = "field")]
public class Field
{
[XmlAttribute(AttributeName = "name")]
public string Name { get; set; }
[XmlElement(ElementName = "value")]
public string Value { get; set; }
}
这只序列化了第一项(标题)。那么如何定义Value属性以便它可以包含任何内容呢?
P.S。我不需要将div
,p
,a
等作为Field
对象内的对象访问。而是将<value>
内的任何内容存储为string
都可以。
我找到了我正在寻找的answer。
[XmlRoot(ElementName = "field")]
public class Field
{
[XmlAttribute(AttributeName = "name")]
public string Name { get; set; }
[XmlElement(ElementName = "value")]
public Value Value { get; set; }
}
[XmlRoot(ElementName = "value")]
public class Value
{
[XmlAnyElement]
[XmlText]
public XmlNode[] Nodes { get; set; }
}