0

我不知道我可以使用 XSD 模式来序列化接收到的 XML 文件。我曾经从 XSD 文件xsd.exe生成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?

4

1 回答 1

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);
}
于 2013-08-14T14:43:49.817 回答