我有以下类和数据成员(以及不相关的方法)我是XML和.NET的新手(虽然这个借口已经老了)并花了几天时间阅读MSDN条目(以及谷歌出现的任何内容)对于第一个XMLReader,然后是XMLDocument,现在是XDocument,XElement和XNode,但是没有更接近于序列化我的类的具体解决方案(也许我需要更深入地研究.NET中的序列化)。为了让我开始,我在XML文件中有一些数据我想要读取(尽管它的格式错误)初始化一个类来初始化我的应用程序。配置类如下:
class IWantToFile
{
class DirsAndFiles
{
public List<string> Suffixes;
public string Dir;
}
enum OPOptsEnum
{
op1Description, op2Description, op3Description, op4Description,
op5Description, op6Description, op7Description, op8Description,
};
List<DirsAndFiles> ProjectDirs;
bool[] OPOpts = new bool[(int)OPOptsEnum.op8Description + 1];
bool otherOpt;
}
观察其中的一对一和一对多关系(例如List<DirsAndFiles> ProjectDirs
)有人可以提供简明的方法来读取和写入这些数据到文件中吗?这将极大地帮助我在这些领域的发展。
我到目前为止:
if (File.Exists(SPECFILENAME)) {
XDocument xdoc = XDocument.Load(SPECFILENAME);
//Ummm.....
}
然后我缺乏.NET XML和Linq经验使我失望。
答案 0 :(得分:3)
我认为你可能想要使用XmlSerializer,'对XML文档进行序列化和反序列化对象'?
请参阅How to serialize an object to XML by using Visual C#了解示例代码。
答案 1 :(得分:1)
[Serializable]
public class MyObject
{
public string SerializeMe { get; set; }
[XmlIgnore]
public string DONTSerializeMe { get; set; }
}
...辅助
public static class SerializerHelper<T>
{
public static string Serialize(T myobject)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
StringWriter stringWriter = new StringWriter();
xmlSerializer.Serialize(stringWriter, myobject);
string xml = stringWriter.ToString();
return xml;
}
public static T Deserialize(string xml)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
StringReader stringReader = new StringReader(xml);
return (T)xmlSerializer.Deserialize(stringReader);
}
}
用法
MyObject myObject = new MyObject();
string xml = SerializerHelper<MyObject>.Serialize(myObject);
MyObject DeserializedObject = SerializerHelper<MyObject>.Deserialize(xml);