简体   繁体   English

从XML文件存储和检索数据

[英]Storing and retrieving data from an XML file

I storage a set of user provided data in a file. 我将一组用户提供的数据存储在文件中。 When I took over the project, everything was saved to a plain text file. 当我接管项目时,所有内容均保存到纯文本文件中。 I redesigned it and now, the storage is an XML file. 我重新设计了它,现在,存储是一个XML文件。 When the process starts, I read the XML file using XDocument and XElement classes. 当过程开始时,我使用XDocumentXElement类读取XML文件。 When I've obtained the values I put them in a constructor of my executing object. 获得值后,将它们放入执行对象的构造函数中。

I wonder if there's a way to automagically read in the XML data so that it, sort of, transforms (or is converted to) an instance of my object. 我想知道是否有一种方法可以自动读取XML数据,从而将其转换(或转换为)我的对象的实例。

So, instead of: 因此,代替:

XElement fromFile = XElement.Load(pathName);
XElement newStuff =
  new XElement("MainNode",
    new XElement("SubNode1", myObject.valueOfSubNode1),
    new XElement("SubNode2", myObject.valueOfSubNode2));
fromFile.ReplaceAll(newStuff);

XmlTextWriter writer = ...;
fromFile.Save(writer);

I'd like to "store" the instance of myObject itself. 我想“存储” myObject本身的实例。 I'm assuming that's possible. 我假设这是可能的。 I have no idea how or even where to start. 我不知道如何甚至从哪里开始。

to serialize a type to XML: 将类型序列化为XML:

public static string Serialize<T>(T data)
{
    XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));

    StringWriter sw = new StringWriter();
    xmlSerializer.Serialize(sw, data);
    return sw.ToString();
}

to deserialize from XML back into your object: 从XML反序列化回您的对象:

public static object DeSerialize<T>(string data)
{
  StringReader rdr = new StringReader(data);

  XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));

  var result = (T)xmlSerializer.Deserialize(rdr);

  return result;
}

also have a look here: C# XML Serialization/DeSerialization 也可以在这里查看: C#XML序列化/反序列化

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM