ASP.net将List <T>转换为XML

阿马努布

我已经读过它,而且看起来很简单,但是我不知道为什么它每次在XmlSerializer Line上崩溃,我想知道为什么为什么人们用类似的方式回答了将列表转换为xml的问题,但它并没有似乎不适合我!

这是代码:

班级 :

[Serializable()]
    public class Pogos
    {
        public string Pogo { get; set; }
        public DateTime Date { get; set; }
    }

每日pogo清单:

 public static List<Pogos> DailyPogos = null;

将每日Pogo列表设置为.xml中的内容

 public static void SetDailyPogos()
    {
        string path = System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/DailyPogos.xml");

        if (File.Exists(path))
        {
            XmlSerializer serializer = new XmlSerializer(typeof(List<Pogos>));

            StreamReader reader = new StreamReader(path);
            DailyPogos = (List<Pogos>)serializer.Deserialize(reader);
            reader.Close();

            foreach (var pogo in DailyPogos)
            {
                if (pogo.Date.Date != DateTime.Now.Date)
                    DailyPogos.Remove(pogo);
            }
        }
        else
            DailyPogos = new List<Pogos>();
    }

将每日Pogos(不同)保存在.xml中

public static void SaveDailyPogos(List<string> pogos)
    {
        foreach (var pogo in pogos)
        {
            var matches = DailyPogos.Where(e => e.Pogo.Contains(pogo));
            foreach ( var match in matches)
            {
                DailyPogos.Remove(match);
            }
            var pog = new Pogos();
            pog.Pogo = pogo;
            pog.Date = DateTime.Now;
            DailyPogos.Add(pog);
        }

        string path = System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/DailyPogos.xml");

        //create the serialiser to create the xml
        XmlSerializer serialiser = new XmlSerializer(typeof(List<Pogos>));

        // Create the TextWriter for the serialiser to use
        TextWriter filestream = new StreamWriter(path);

        //write to the file
        serialiser.Serialize(filestream, DailyPogos);

        // Close the file
        filestream.Close();
    }

引起麻烦的行(没有错误只会崩溃):

XmlSerializer serializer = new XmlSerializer(typeof(List<Pogos>));

编辑:在这种情况下,我很笨,首先,我可以通过添加一个尝试捕获来监视异常,我不知道为什么我没有。可能很累。例外是因为应用程序的保护级别而失败,该保护级别是通过在程序类中添加“ public”来修复的。

数据库

我无法重现您声称看到的异常-鉴于Pogo该类是您所说的,new XmlSerializer(typeof(List<Pogos>))因此不会抛出异常。

您应该仔细检查该类是否是公共的,并且在实际的应用程序中具有公共的无参数构造函数如果没有,那么new XmlSerializer(typeof(List<Pogos>))的确会引发异常。

就是说,在创建的调用附近有两个编码错误XmlSerializer,即您正在修改DailyPogos集合,同时使用一条foreach语句枚举集合文档中所述,这将引发异常

IEnumerator.MoveNext Method ()

异常:InvalidOperationException:在创建枚举器后修改了集合。

为了避免这些异常,可以使用List.RemoveAll()修改SetDailyPogos()如下:

XmlSerializer serializer = new XmlSerializer(typeof(List<Pogos>));
using (var reader = new StreamReader(path))
{
    DailyPogos = (List<Pogos>)serializer.Deserialize(reader);
}
var now = DateTime.Now;
DailyPogos.RemoveAll(p => p.Date.Date != now.Date);

SaveDailyPogos()

foreach (var pogo in pogos)
{
    DailyPogos.RemoveAll(p => p.Pogo.Contains(pogo));
    var pog = new Pogos();
    pog.Pogo = pogo;
    pog.Date = DateTime.Now;
    DailyPogos.Add(pog);
}

由于这些foreach语句引发的异常发生在构造的调用附近,因此XmlSerializer您可能会误认为异常的来源了吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.NET将IQueryable转换为List

来自分类Dev

ASP.NET将IQueryable转换为List

来自分类Dev

在ASP.NET Core MVC中将XML转换为JSON

来自分类Dev

使用C#将内联XML节点转换为ASP.NET中的嵌套节点

来自分类Dev

将List <T>转换为BlockingCollection <T>

来自分类Dev

将ICollection <T>转换为List <T>

来自分类Dev

T-SQL将xml字段转换为多列表

来自分类Dev

使用T-SQL将表转换为XML

来自分类Dev

T-SQL将xml字段转换为多列表

来自分类Dev

将 JSON 转换为 XML 的 T-SQL 函数

来自分类Dev

将List <T>转换为List <string>

来自分类Dev

使用.ToProto()时,protobuf-net将List <T>转换为List_T类

来自分类Dev

如何编写将List <T>转换为xml字符串的通用方法

来自分类Dev

ASP.NET Core如何将任何类型转换为ActionResult <T>返回的控制器操作类型?

来自分类Dev

在ASP.NET MVC 4中将列表<List <KeyValuePair <string,string >>>转换为json?

来自分类Dev

支持将DataTableReader转换为List <T>

来自分类Dev

将JSON从文件转换为List <T>

来自分类Dev

将ObjectResult <string>转换为List <T>

来自分类Dev

将List <T>转换为对象

来自分类Dev

将JsonObject转换为List <T>

来自分类Dev

是否将List <T?>转换为List <T>?

来自分类Dev

将Bootstrap Carousel转换为ASP.Net Repeater

来自分类Dev

将varchar转换为float asp.net时出错

来自分类Dev

将asp.net Webform转换为MVC

来自分类Dev

将Bootstrap Carousel转换为ASP.Net Repeater

来自分类Dev

将RegEx从PHP转换为Asp.Net RegularExpressionValidator

来自分类Dev

ASP.NET 将真/假转换为是/否

来自分类常见问题

将向量<T>转换为initializer_list <T>

来自分类Dev

RX将IObservable <List <T >>转换为IObservable <T>