热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

反序列化XmlDocument的最短方法

如何解决《反序列化XmlDocument的最短方法》经验,为你挑选了3个好方法。

我正在寻找一种简洁的方法来反序列化XmlDocument对象.我发现最接近的是这个,但我真的很想知道是否有更好的方法(在.NET 4.5甚至4.6),因为我已经有了XmlDocument.

所以目前看起来如下:

// aciResponse.Data is a XmlDocument
MyClass response;
using (XmlReader reader = XmlReader.Create((new StringReader(aciResponse.Data.InnerXml))))
{
    var serializer = new XmlSerializer(typeof(MyClass));
    respOnse=  (MyClass)serializer.Deserialize(reader);
}

谢谢你有更好的主意!



1> SwDevMan81..:

您可以放弃XmlReader并使用TextReader替代并使用TextReader XmlSerializer.Deserialize Method重载.

工作范例:

void Main()
{
   String aciRespOnseData= "test";
   using(TextReader sr = new StringReader(aciResponseData))
   {
        var serializer = new System.Xml.Serialization.XmlSerializer(typeof(MyClass));
        MyClass respOnse=  (MyClass)serializer.Deserialize(sr);
        Console.WriteLine(response.bar);
   }
}

[System.Xml.Serialization.XmlRoot("tag")]
public class MyClass
{
   public String bar;
}



2> 小智..:

如果您已经拥有一个XmlDocument可以使用的对象XmlNodeReader

MyClass respOnse= null;
XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
using (XmlReader reader = new XmlNodeReader(aciResponse.Data))
{
    respOnse= (MyClass)serializer.Deserialize(reader);
}



3> 小智..:

有一种更好,更懒惰的方法来做到这一点.但只有在使用Visual Studio时才有可能.

脚步:

    打开Visual Studio并创建一个新的类文件(比如Sample1.cs).现在从此类文件中删除示例类定义.

    将XML文件复制到剪贴板(Ctrl + A,Ctrl + C)

    在Visual Studio中,转到"编辑"菜单并选择"选择性粘贴" - >"将XML粘贴为类".

完成.Visual Studio将生成反序列化此XML所需的所有类定义.


推荐阅读
author-avatar
手机用户2702936044
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有