xml 格式数据与实体相互转换
1.xml文件转为cs文件
1.1.方法:打开“VS 开发人员命令”窗口
xml转xsd执行语句--' xsd xml文件路径 /outputdir:存放的文件夹路径'
xsd转cs执行语句-'xsd xsd文件路径 /classes /o:存放的文件夹路径'.
1.2.举例:
2.xml格式数据转为对象实体
2.1.方法代码:
实体类型 实体名称 = new 实体类型();
实体名称 = (实体类型)Deserialize(xml格式数据字符串,
实体名称 .GetType());
2.2.转换方法:
/// <summary>
/// 反序列化XML字符串为指定类型
/// </summary>
public static object Deserialize(string Xml, Type ThisType)
{
XmlSerializer xmlSerializer = new XmlSerializer(ThisType);
object result;
try
{
using (StringReader stringReader = new StringReader(Xml))
{
result = xmlSerializer.Deserialize(stringReader);
}
}
catch (Exception innerException)
{
bool flag = false;
if (Xml != null)
{
if (Xml.StartsWith(Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble())))
{
flag = true;
}
}
throw new ApplicationException(string.Format("Couldn't parse XML: '{0}'; Contains BOM: {1}; Type: {2}.",
Xml, flag, ThisType.FullName), innerException);
}
return result;
}
3.实体转换为xml格式数据
3.1.方法代码:
Serializer(实体名称.GetType(), 实体名称);
3.2.转换方法:
/// <summary>
/// 序列化XML文件
/// </summary>
/// <param name="type">类型</param>
/// <param name="obj">对象</param>
/// <returns></returns>
public static string Serializer(Type type, object obj)
{
MemoryStream Stream = new MemoryStream();
//创建序列化对象
XmlSerializer xml = new XmlSerializer(type);
try
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
XmlTextWriter writer = new XmlTextWriter(Stream, Encoding.UTF8);
//序列化对象
XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add("", "");
xml.Serialize(writer, obj, namespaces);
}
catch (InvalidOperationException)
{
throw;
}
Stream.Position = 0;
StreamReader sr = new StreamReader(Stream);
string str = sr.ReadToEnd();
return str;
}