使用c#序列化和反序列化xml是非常简单的,但注意序列化字符串指定文本编码格式需要使用流的形式,否则编码格式设置无效。因此在一些需要设置编码格式的场景,使用流Stream来操作xml序列化和反序列化。代码如下:
/// <summary>
/// 数据输入,反序列化xml为对象
/// </summary>
/// <param name="XmlString"></param>
/// <returns></returns>
public string FileInput(string XmlString)
{
string InputResult = "";
using (MemoryStream MS = new MemoryStream(Encoding.UTF8.GetBytes(XmlString)))
{
using (XmlReader xr = XmlReader.Create(MS))
{
XmlSerializer xmlSearializer = new XmlSerializer(typeof(CobraInput));
InputData = (CobraInput)xmlSearializer.Deserialize(xr);
InputResult = "Read XML Success";
}
}
return InputResult;
}
/// <summary>
/// 数据输出,序列化xml文本
/// </summary>
/// <returns></returns>
public string FileOutput()
{
using (MemoryStream ms = new MemoryStream())
{
var setting = new XmlWriterSettings()
{
Encoding = new UTF8Encoding(false),
Indent = true,
};
using (XmlWriter writer = XmlWriter.Create(ms, setting))
{
XmlSerializer xmlSearializer = new XmlSerializer(typeof(CobraOutput));
xmlSearializer.Serialize(writer, OutputData);
OutputXmlString = Encoding.UTF8.GetString(ms.ToArray());
}
}
return OutputXmlString;
}