从 XML 文件存储和检索数据 [英] Storing and retrieving data from an XML file

查看:43
本文介绍了从 XML 文件存储和检索数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将一组用户提供的数据存储在一个文件中.当我接手这个项目时,一切都被保存到一个纯文本文件中.我重新设计了它,现在,存储是一个 XML 文件.当流程开始时,我使用 XDocumentXElement 类读取 XML 文件.获得值后,我将它们放入执行对象的构造函数中.

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. When the process starts, I read the XML file using XDocument and XElement classes. When I've obtained the values I put them in a constructor of my executing object.

我想知道是否有一种方法可以自动读取 XML 数据,以便它在某种程度上转换(或转换为)我的对象的实例.

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.

所以,而不是:

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);

我想存储"myObject 本身的实例.我假设这是可能的.我不知道如何开始,甚至不知道从哪里开始.

I'd like to "store" the instance of myObject itself. I'm assuming that's possible. I have no idea how or even where to start.

推荐答案

将类型序列化为 XML:

to serialize a type to 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();
}

从 XML 反序列化回您的对象:

to deserialize from XML back into your object:

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;
}

也看看这里:C# XML Serialization/DeSerialization

这篇关于从 XML 文件存储和检索数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆