我不知道我可以使用XSD架构来序列化收到的XML文件。我使用xsd.exe
从XSD文件生成cs
类,现在我需要使用该类来获取类属性中的数据,但我想念一件事,我需要帮助。
这是代码:
private void ParseDataFromXmlDocument_UsingSerializerClass(XmlDocument doc)
{
XmlSerializer ser = new XmlSerializer(typeof(ClassFromXsd));
string filename = Path.Combine("C:\\myxmls\\test", "xmlname.xml");
ClassFromXsdmyClass = ser.Deserialize(new FileStream(filename, FileMode.Open)) as ClassFromXsd;
if (myClass != null)
{
// to do
}
...
这里我使用来自驱动器的XML文件。我想从我传入的参数中使用这个XmlDocument。那么如何调整此代码以使用doc而不是来自驱动的XML?
答案 0 :(得分:2)
您可以将XmlDocument写入MemoryStream,然后像您已经那样对其进行反序列化。
XmlDocument doc = new XmlDocument();
ClassFromXsd obj = null;
using (var s = new MemoryStream())
{
doc.Save(s);
var ser = new XmlSerializer(typeof (ClassFromXsd));
s.Seek(0, SeekOrigin.Begin);
obj = (ClassFromXsd)ser.Deserialize(s);
}