[英]XML Deserialization {“Root element is missing.”} Error
我正在向解決方案中添加一個新項目,並添加了下面發布的代碼。 就像我在本解決方案中多次做的一樣,完全完成了LoadXML()方法,變量設置和文件反序列化,但是現在突然對於這一部分,它拋出了這個令人討厭的“ {”根元素丟失。”}”錯誤-即使沒有XML或使用其他XML時,我也知道可以工作。 對我而言,這意味着該錯誤顯然存在於代碼中,但是由於該代碼幾乎是從我以前的文件傳輸中復制出來的,因此我也不知道該怎么辦。 先前在此網站上發布的針對此錯誤的其他情況與我的情況並不完全相符,因此我重新開始嘗試,希望我能更接近答案!
//fileName and XML variables for serialization/deserialization
const string fileName = "SimulatedTrain1.xml";
XmlSerializer xml = new XmlSerializer(typeof(BindingList<SimulatedTrain>));
//Create BindingList object to hold XML data
public BindingList<SimulatedTrain> SimulatedTrain = new BindingList<SimulatedTrain>();
public void LoadXML()
{
try
{
using (var fs = new FileStream(fileName, FileMode.OpenOrCreate))
{
var tempTrain = (BindingList<SimulatedTrain>)xml.Deserialize(fs);
SimulatedTrain = tempTrain;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message, ex);
}
}
在form_load上調用LoadXML()
編輯:這是我的XML文件的一部分(其余基本上是重復數據)
首先,通過選擇“復制到輸出目錄”作為“始終復制” ,確保將XML文件復制到構建目錄中。
假設該文件存在,則在反序列化XML文件時可能會出現類型轉換錯誤。
以下作品:
SimulatedTrain.cs:
[XmlRoot("ArrayOfSimulatedRailCar")]
public class SimulatedTrain
{
[XmlElement("SimulatedRailCar")]
public List<SimulatedRailCar> Cars { get; set; }
}
SimulatedRailCar.cs:
public class SimulatedRailCar
{
string Name { get; set; }
// More properties here...
}
TrainProg.cs:
const string fileName = "SimulatedTrain1.xml";
XmlSerializer xml = new XmlSerializer(typeof(SimulatedTrain));
public SimulatedTrain SimulatedTrain;
public void LoadXML()
{
Contract.Assert(File.Exists(fileName));
try
{
using (var fs = new FileStream(fileName, FileMode.Open))
{
SimulatedTrain = (SimulatedTrain)xml.Deserialize(fs);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message, ex);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.