如何使用XmlDocument对象而不是从驱动器读取XML文件?

时间:2013-08-14 14:41:31

标签: c# xml-serialization xmldocument xmlserializer xsd.exe

我不知道我可以使用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?

1 个答案:

答案 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);
}