帮我用C#封装一个读写XML文件的类
时间: 2024-09-25 07:16:35 浏览: 36
在C#中,你可以创建一个名为`XmlFileHandler`的类,用于封装读取和写入XML文件的操作。这里是一个简单的示例:
```csharp
using System;
using System.IO;
using System.Xml;
public class XmlFileHandler
{
// 文件路径属性
private string filePath;
public XmlFileHandler(string filePath)
{
this.filePath = filePath;
}
// 保存XML到文件
public void SaveData(object data, string xmlNamespace = "")
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(ConvertToValidXml(data, xmlNamespace));
try
{
xmlDoc.Save(filePath);
Console.WriteLine($"数据已成功保存到 {filePath}");
}
catch (Exception ex)
{
Console.WriteLine($"保存过程中发生错误: {ex.Message}");
}
}
// 将.NET对象转换为XML字符串
private static string ConvertToValidXml(object obj, string namespacePrefix)
{
if (obj == null) return "";
var serializer = new XmlSerializer(obj.GetType());
using (var stringWriter = new StringWriter())
{
serializer.Serialize(stringWriter, obj, new XmlSerializerNamespaces(new[] { new XmlQualifiedName(namespacePrefix, "") }));
return stringWriter.ToString();
}
}
// 从文件加载XML
public T LoadData<T>() where T : class
{
try
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filePath);
return (T)serializer.Deserialize(new StringReader(xmlDoc.OuterXml), typeof(T));
}
catch (Exception ex)
{
Console.WriteLine($"加载过程中发生错误: {ex.Message}");
return default(T);
}
}
}
// 使用示例
public class MyData
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Program
{
public static void Main()
{
MyData data = new MyData() { Name = "John", Age = 30 };
XmlFileHandler handler = new XmlFileHandler("data.xml");
handler.SaveData(data);
// 后续可以这样读取数据:
MyData loadedData = handler.LoadData<MyData>();
Console.WriteLine(loadedData.Name); // 输出 "John"
}
}
```
这个`XmlFileHandler`类有两个方法:`SaveData`用于将对象序列化为XML并写入文件,`LoadData`则用于从文件中反序列化回对象。
阅读全文