反序列化后获取XmlElementAttribute的名称

时间:2011-10-25 14:41:52

标签: c# xml-serialization

我没有找到任何关于此的信息,也许有人可以提供帮助。

我有一个XML(为方便起见而简化):

<content>
  <field1>value</field1>
  <field2>
    <field3>value</field3>
  </field2>
</content>

我尝试使用这样的类反序列化它:

[XmlRoot("content")]
public class Content
{
    [XmlElement]
    public List<Item> Fields { get; set; }
}

public class Item
{

    [XmlElement]
    public List<Item> Fields { get; set; }

    [XmlText]
    public String Value { get; set; }
}

我有两个问题:

  1. 我可以获得该字段的实际名称吗?和Item类中的[XmlName] string name;一样?或者类本身的某种属性?由于某些原因,无法将节点名称设置为“field”并添加“type”属性;-)虽然实际的类和序列化过程非常复杂,但我不想实现自己的序列化程序。

  2. 我可以添加像[XmlElement(“field *”)]这样的通配符吗?在我知道第一个问题的答案之前我无法测试它,所以如果有更好的选择,我也很想知道它。

  3. 感谢。

2 个答案:

答案 0 :(得分:1)

您可以在属性的构造函数中设置匹配的XMl元素或属性的名称

[XmlAttribute("FieldAsAttribute")]

- &GT;将属性序列化/反序列化为Xml属性 FieldAsAttribute

[XmlElement("FieldAsElement")]

- &GT;将属性序列化/反序列化为Xml元素 FieldAsElement

答案 1 :(得分:0)

唯一的答案是,不幸的是,这是不可能的。

结果我们编写了自己的序列化例程。