![](/img/trans.png)
[英]Issues with saving xml document to xml file in the output directory. c# Xamarin
[英]C# Saving into an XML document
我嘗試將對象保存到 XML 文檔。 我總是得到一個內部異常錯誤。 我認為它必須與裝箱和拆箱有關,但我無法幫助自己。
所以我們開始:
XML保存方法
public class Saveclass
//
public static void Save(string filename, List<Class> classlist)
{
StreamWriter writer = new StreamWriter(filename, false, Encoding.UTF8);
XmlSerializer serializer = new XmlSerializer(typeof(class));
serializer.Serialize(writer,classlist);//Here i get the error at classlist
writer.Close();
}
這里是 SaveFile 對話框
private void SaveButton(object sender, EventArgs e)
{
SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = "XML Data|*.xml";
if (dialog.ShowDialog() == DialogResult.OK)
{
List<class> classlist = null;
foreach (ListViewItem item in this.listViewWinforms.Items)
{
classlist = new List<class>();
}
Saveclass.Save(dialog.FileName, classlist)
}
}
在 Basic 中,我有一個包含項目的列表視圖,我想將這些項目保存在我的列表視圖中到一個 XML 文檔錯誤是
System.InvalidOperationException: '嘗試生成 XML 文檔
InvalidCastException:類型“System.Collections.Generic.List`1 [Namespace.Class]”的對象無法轉換為“Namespace.Class”
類型不匹配。
您將序列化程序定義為:
new XmlSerializer(typeof(class));
它被配置為序列化class
類型的對象。
但是,您隨后嘗試序列化類classlist
對象,該對象不是class
而是List<Class>
。
嘗試將序列化程序定義為:
new XmlSerializer(typeof(List<Class>));
順便說一下,命名你的類class
是非常混亂的。 您應該嘗試更具描述性地命名您的類。
我認為您只需要更改一行:
只需使用 typeof(List) 而不是 typeof(class))
XmlSerializer serializer = new XmlSerializer(typeof(List<Class>));
這是一個小例子
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;
using System.IO;
namespace ConsoleApplication1
{
public class Program
{
public static void Main(string[] args)
{
List<Car> myList = new List<Car>();
myList.Add(new Car(){ Name = "Beetle", Brand = "VW", Price = 5999.9M });
myList.Add(new Car(){ Name = "Corolla", Brand = "Toyota", Price = 49999.9M });
Saveclass.Save("carlist.xml",myList);
}
}
public static class Saveclass
{
public static void Save(string filename, List<Car> classlist)
{
StreamWriter writer = new StreamWriter(filename, false, Encoding.UTF8);
XmlSerializer serializer = new XmlSerializer(typeof(List<Car>));
serializer.Serialize(writer,classlist);
writer.Close();
}
}
public class Car
{
public string Name {get;set;}
public string Brand {get; set;}
public decimal Price {get; set;}
}
}
你可以在這里測試
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.