如何创建c#类模型来获得给定格式的xml序列化请求
本文关键字:定格 格式 请求 序列化 xml 何创建 创建 模型 | 更新日期: 2023-09-27 18:01:53
我正在设计我的类模型。类模型的序列化消息需要采用以下格式:
<?xml version="1.0" encoding="UTF-8" ?>
<Request>
<Name>TesterScript</Name>
<ID>CD_20110628133820576</ID>
<Type>
<ItemId>191_20110628T133821</ItemId>
<ShopId>MyBCShop</ShopId>
<MessageXml>
<ChildMessage>
This is my message
</ChildMessage>
</MessageXml>
</Type>
<SentTime>2011-06-30T15:27:06-07:00</SentTime>
</Request>
我该如何设计类呢?另外,将建议的类模型序列化到上面的XML消息的最佳方法应该是什么?我正在考虑使用:
// Serialize the request
XmlSerializer xs = new XmlSerializer(typeof(Request));
StringWriter sw = new StringWriter();
xs.Serialize(sw, dispatchRequest);
string xml = sw.ToString();
return new xml;
这是最合适的方式吗?
如果您已经有了模式,我将只使用xsd.exe
来生成类。它已经被标记为可序列化的,除了调用基本的XmlSerializer
之外,你不需要做任何事情(就像你在第二个代码片段中所做的那样)
我希望我的解决方案是有用的....
xml内容(我认为你的帖子有问题…)
<?xml version="1.0" encoding="utf-8" ?>
<Request>
<Name>TesterScript</Name>
<ID>CD_20110628133820576</ID>
<Type>
<ItemId>191_20110628T133821</ItemId>
<ShopId>BARCGB2L</ShopId>
<MessageXml>
<ChildMessage>
This is my message
</ChildMessage>
</MessageXml>
</Type>
<SentTime>2011-06-30T15:27:06-07:00</SentTime>
</Request>
类:
[XmlRoot("Request")]
public class SampleClass
{
public string Name { get; set; }
public string ID { get; set; }
[XmlElement("Type")]
public SubClass SC { get; set; }
public string SentTime { get; set; }
public class SubClass
{
public string ItemId { get; set; }
public string ShopId { get; set; }
[XmlElement("MessageXml")]
public Sub2Class SC2 { get; set; }
public class Sub2Class
{
public string ChildMessage { get; set; }
}
}
}
序列化方法:
public static T DeserializeForXml<T>(string filePath)
{
XmlSerializer selializer = new XmlSerializer(typeof(T));
using (Stream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
return (T)selializer.Deserialize(fs);
}
}
如何使用?
SampleClass sc = Utility.DeserializeForXml<SampleClass>("test.xml");