C# 尝试读取代码中的XML值时出错
我有一个从XML文件读取记录的代码。XML文件是:C# 尝试读取代码中的XML值时出错,c#,xml,deserialization,C#,Xml,Deserialization,我有一个从XML文件读取记录的代码。XML文件是: [XmlRootAttribute("ArrayOfFeedbackData")] public class FeedbackData { public string Criteria { get; set; } public int Excellent { get; set; } public int Good { get; set; } public
[XmlRootAttribute("ArrayOfFeedbackData")]
public class FeedbackData
{
public string Criteria { get; set; }
public int Excellent { get; set; }
public int Good { get; set; }
public int Average { get; set; }
public int Dissatisfied { get; set; }
}
<?xml version="1.0"?>
<ArrayOfFeedbackData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FeedbackData>
<Criteria>Food Quality</Criteria>
<Excellent>0</Excellent>
<Good>0</Good>
<Average>0</Average>
<Dissatisfied>0</Dissatisfied>
</FeedbackData>
<FeedbackData>
<Criteria>Staff Friendliness</Criteria>
<Excellent>0</Excellent>
<Good>0</Good>
<Average>0</Average>
<Dissatisfied>0</Dissatisfied>
</FeedbackData>
<FeedbackData>
<Criteria>Cleanliness</Criteria>
<Excellent>0</Excellent>
<Good>0</Good>
<Average>0</Average>
<Dissatisfied>0</Dissatisfied>
</FeedbackData>
<FeedbackData>
<Criteria>Order Accuracy</Criteria>
<Excellent>0</Excellent>
<Good>0</Good>
<Average>0</Average>
<Dissatisfied>0</Dissatisfied>
</FeedbackData>
读取记录的代码是:
private void EnterFeedback_Load(object sender, EventArgs e)
{
FileStream fs = new FileStream(xmlPath, FileMode.Open, FileAccess.Read);
lstFD = (List<FeedbackData>)xs.Deserialize(fs);
}
private void EnterFeedback\u加载(对象发送方,事件参数e)
{
FileStream fs=newfilestream(xmlPath,FileMode.Open,FileAccess.Read);
lstFD=(List)xs.反序列化(fs);
}
每次执行代码时,我都会在lstFD=(List)xs.Deserialize(fs)中出错代码>:
“System.InvalidOperationException:'XML文档(2,2)中存在错误。”
InvalidOperationException:不应为。“
示例XML文件是:
[XmlRootAttribute("ArrayOfFeedbackData")]
public class FeedbackData
{
public string Criteria { get; set; }
public int Excellent { get; set; }
public int Good { get; set; }
public int Average { get; set; }
public int Dissatisfied { get; set; }
}
<?xml version="1.0"?>
<ArrayOfFeedbackData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FeedbackData>
<Criteria>Food Quality</Criteria>
<Excellent>0</Excellent>
<Good>0</Good>
<Average>0</Average>
<Dissatisfied>0</Dissatisfied>
</FeedbackData>
<FeedbackData>
<Criteria>Staff Friendliness</Criteria>
<Excellent>0</Excellent>
<Good>0</Good>
<Average>0</Average>
<Dissatisfied>0</Dissatisfied>
</FeedbackData>
<FeedbackData>
<Criteria>Cleanliness</Criteria>
<Excellent>0</Excellent>
<Good>0</Good>
<Average>0</Average>
<Dissatisfied>0</Dissatisfied>
</FeedbackData>
<FeedbackData>
<Criteria>Order Accuracy</Criteria>
<Excellent>0</Excellent>
<Good>0</Good>
<Average>0</Average>
<Dissatisfied>0</Dissatisfied>
</FeedbackData>
食品质量
0
0
0
0
员工友好
0
0
0
0
清洁
0
0
0
0
订单准确性
0
0
0
0
这是我拥有的XML文件。
我遗漏了什么吗?请尝试以下内容:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XmlReader reader = XmlReader.Create(FILENAME);
XmlSerializer serializer = new XmlSerializer(typeof(ArrayOfFeedbackData));
ArrayOfFeedbackData arrayOFeedbackData = (ArrayOfFeedbackData)serializer.Deserialize(reader);
}
}
public class ArrayOfFeedbackData
{
[XmlElement()]
public List<FeedbackData> FeedbackData { get; set; }
}
public class FeedbackData
{
public string Criteria { get; set; }
public int Excellent { get; set; }
public int Good { get; set; }
public int Average { get; set; }
public int Dissatisfied { get; set; }
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Xml;
使用System.Xml.Serialization;
命名空间控制台应用程序1
{
班级计划
{
常量字符串文件名=@“c:\temp\test.xml”;
静态void Main(字符串[]参数)
{
XmlReader=XmlReader.Create(文件名);
XmlSerializer serializer=新的XmlSerializer(typeof(ArrayOfFeedbackData));
ArrayOfFeedbackData ArrayOfFeedbackData=(ArrayOfFeedbackData)序列化程序。反序列化(读取器);
}
}
公共类ArrayOfFeedbackData
{
[XmlElement()]
公共列表反馈数据{get;set;}
}
公共类反馈数据
{
公共字符串条件{get;set;}
公共int{get;set;}
公共int Good{get;set;}
公共整数平均值{get;set;}
公共int不满意{get;set;}
}
}
请您添加一个示例xml好吗?我已经添加了一个示例xml文件。请看这里:似乎是相同的问题。演示如何创建序列化程序。我打赌你会:新的XmlSerializer(typeof(FeedbackData))
。它应该是这样的:newxmlserializer(typeof(List))
注意:您可以从类中删除XmlRootAttribute
,您不需要它。