1

最近我将我的项目从框架 2.0 转移到了框架 4.5。我有一个 xml 文件,它将被反序列化并执行一些操作。xml 反序列化在框架 2.0 中可以正常工作。但是相同的 xml 文件没有更改任何代码,它没有反序列化它的任何 xml 文件给我的错误是“根级别的数据无效。第 31 行,第 27 位。”。我为此浪费了 30 分钟。这是我的 XML 文件

<SpreadResultData>
<SpreadToList>
<Spread>
<GroupName>A</GroupName>
<CellPos>B</CellPos>
<CellValue>0~</CellValue>
<Color>Green</Color>
<CellLinePos>3</CellLinePos>
<IsSetColor>true</IsSetColor>
<IsClear>false</IsClear>
</Spread>
<Spread>
<GroupName>B</GroupName>
<CellPos>C</CellPos>
<CellValue>0~</CellValue>
<Color>Yellow</Color>
<CellLinePos>3</CellLinePos>
<IsSetColor>true</IsSetColor>
<IsClear>false</IsClear>
</Spread>
<Spread>
<GroupName>C</GroupName>
<CellPos>D</CellPos>
<CellValue>0~</CellValue>
<Color>Red</Color>
<CellLinePos>3</CellLinePos>
<IsSetColor>true</IsSetColor>
<IsClear>false</IsClear>
</Spread>
</SpreadToList>
</SpreadResultData>
4

1 回答 1

3

编辑:上传原始文件内容后,问题变得更加清晰。如果您将最后 10 个字节视为十六进制,我们会得到:

6C-74-44-61-74-61-3E-EF-BB-BF

这是:

l  t  D  a  t  a  >

其中最后 3 个字节是零宽度不间断空间

修复文件末尾的坏数据,你应该被排序。它应该结束:

6C-74-44-61-74-61-3E

无法复制;这适用于我针对.NET 4.5,根据您的帖子使用xml文件;你确定文件后面没有别的东西吗?您可以在某处上传确切的文件吗?可能有一些内容在 SO 上的文本转储中不可见:

static class Program
{
    static void Main()
    {
        var ser = new XmlSerializer(typeof(SpreadResultData));
        SpreadResultData data;
        using(var file = File.OpenRead("my.xml"))
        {
            data = (SpreadResultData)ser.Deserialize(file);
        }
    }
}

public class SpreadResultData
{
    public List<Spread> SpreadToList {get;set;}
}
public class Spread
{
    public string GroupName { get; set; }
    public string CellPos { get; set; }
    public string CellValue { get; set; }
    public string Color { get; set; }
    public int CellLinePos { get; set; }
    public bool IsSetColor { get; set; }
    public bool IsClear { get; set; }
}
于 2013-04-11T08:13:03.160 回答