【发布时间】:2011-10-25 14:41:52
【问题描述】:
我没有找到这方面的任何信息,也许有人可以帮忙。
我有一个 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; }
}
我有两个问题:
我可以获得该字段的实际名称吗?像 Item 类中的
[XmlName] string name;一样?还是类本身的某种属性?由于某些原因,无法将节点名称设置为“field”并添加“type”属性;-) 虽然实际的类和序列化过程非常复杂,但我不想实现自己的序列化器。我可以添加通配符,如 [XmlElement("field*")]?在我知道第一个问题的答案之前,我无法对其进行测试,所以如果有更好的选择,我也很想知道。
谢谢。
【问题讨论】:
-
看起来您正在尝试创建一个可以表示任意 XML 的结构。如果是这样,你为什么要使用 XML 序列化呢?使用 LINQ to XML 可能更合适。
-
嗯,你是对的,这是一个相当随意的结构。关键是,我已经在很多情况下使用了 XML 序列化,我想在我的整个项目中保留这个约定(直到现在……)。当然,如果我找不到解决方案,我会切换到 LINQ..
标签: c# xml-serialization