通过自定义节点值转换实现简单的XML序列化



如何反序列化和强制转换以下xml文件?我希望Valid元素被转换为bool属性,Time对象被转换为DateTime属性

<Foo>
    <Valid>True</Valid>
    <Time>19/02/2012 00:25:50</Time>
</Foo>

并且没有反射请

Xml反序列化。

创建具有属性的类:

class Foo
{
  [XmlAttribute]
  public bool valid;
  [XmlAttribute]
  public DateTime time;
}

记住-字段必须是公共的。

然后:

FileStream fs = new FileStream(filename, FileMode.Open);
XmlReader reader = XmlReader.Create(fs);
XmlSerializer xs = new XmlSerializer(typeof(Foo));
Foo foo = (Foo)xs.Deserialize(reader);
fs.Close();

.net有一个xmlserializer对象,可以将对象序列化到xml流中或从xml流中反序列化对象,但它创建标记的方式与xml文件不同。也许您可以创建一个自定义序列化程序,它将根据您的规则进行操作。

在这里你可以找到一个例子。(它使用xsd文件来设置序列化规则)

最新更新