【问题标题】:How to use the XML Serializer to read xml data from a string?如何使用 XML Serializer 从字符串中读取 xml 数据?
【发布时间】:2012-03-13 23:12:43
【问题描述】:

我正在关注本指南(迄今为止我发现的最详细的指南): http://blog.allanglen.com/2009/09/quickly-generate-c-data-objects-from-xml

但是在“第 4 步:读取 XML 文件”中我遇到了一个问题,我没有从文件中获取我的 XML 数据,而是从数据库中获取它作为字符串。

我是 C# 和 XML 的新手,我不知道如何从第 4 步开始使用字符串!

我正在使用:

 XmlDocument doc = new XmlDocument();
                doc.Load(new StringReader(dbString));

其中 dbString 是数据库中的字符串。

【问题讨论】:

    标签: c# xml string serialization xml-serialization


    【解决方案1】:

    您可以使用LoadXml 方法:

    string xml = ... go and fetch XML from your db
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(xml);
    

    另请注意,虽然XmlDocument 尚未被弃用,但XDocument 是处理从 .NET 3.5 及更高版本开始的内存中 XML 文档的首选方式:

    string xml = ... go and fetch XML from your db
    XDocument doc = XDocument.Parse(xml);
    

    更新:

    抱歉,我实际上并没有查看您链接的博客文章。我被您在问题中发布的代码 sn-p 误导了,该代码实际上与上述文章中第 4 步中所做的事情以及您所询问的内容无关。您似乎正在尝试将 XML 字符串反序列化为对象。您可以为此使用 StringReader:

    string xml = ... go and fetch XML from your db
    XmlSerializer serializer = new XmlSerializer(typeof(catalog));
    using (StringReader reader = new StringReader(xml))
    {
         catalog catalog = (catalog)serializer.Deserialize(reader);
    }
    

    【讨论】:

    • 这就是我使用的,正如我在第一篇文章中所述。但是如何在第 4 步和之后的步骤中应用它呢?
    • 谢谢!将实施它并在明天尝试!
    • 如果我将 xml 生成为字符串怎么办?我可以使用哪个对象来反序列化?谢谢
    • @Saher,请再次阅读我的回答。这正是最终代码 sn-p 说明的内容 -> 将表示 XML 文档的字符串反序列化为类的实例。
    • 我明白,谢谢,但这里的文档:msdn.microsoft.com/en-us/library/… 并没有显示 Deserialize 需要一个 StringReader。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多