【问题标题】:Error while trying to read XML values in Code尝试读取代码中的 XML 值时出错
【发布时间】:2020-11-16 07:01:58
【问题描述】:

我有一个从 XML 文件中读取记录的代码。 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; }
}

读取记录的代码是:

  private void EnterFeedback_Load(object sender, EventArgs e)
  {
      FileStream fs = new FileStream(xmlPath, FileMode.Open, FileAccess.Read);
      lstFD = (List<FeedbackData>)xs.Deserialize(fs);
  }

每次执行代码时,lstFD = (List&lt;FeedbackData&gt;)xs.Deserialize(fs); 中都会出现错误:

"System.InvalidOperationException: 'There is an error in XML document (2, 2).'
 InvalidOperationException: <ArrayOfFeedbackData xmlns=''> was not expected."

示例 XML 文件是:

<?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>

这是我拥有的 XMLFile。 我错过了什么吗?

【问题讨论】:

  • 能不能好心加个xml例子?
  • 我添加了一个示例 XML 文件..
  • 看这里:stackoverflow.com/questions/15544517/… 好像是同样的问题。
  • 展示如何创建序列化程序。我敢打赌:new XmlSerializer(typeof(FeedbackData))。它应该是这样的:new XmlSerializer(typeof(List&lt;FeedbackData&gt;))
  • 注意:您可以从班级中删除 XmlRootAttribute - 您不需要它。

标签: c# xml deserialization


【解决方案1】:

尝试以下:

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; }
    }
}

【讨论】:

    猜你喜欢
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    相关资源
    最近更新 更多