C#XML未知节点的反序列化

时间:2018-02-13 05:31:57

标签: c# xml serialization xmlserializer

我是.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。我不需要将divpa等作为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; }
}

0 个答案:

没有答案