c# - 使用 XmlSerializer 反序列化 xml 文件时出错

标签 c# xml xml-serialization xmlserializer

我正在尝试使用 XmlSerializer 反序列化一个 xml,我得到 InvalidOperationException:不是预期的。 这是 xml 文件:

<?xml version="1.0" encoding="us-ascii"?>
    <ArrayOfplatform xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <platform>
    <positionX></positionX>
    <positionY></positionY>
    <moveSpeed>10</moveSpeed>
    <ID>1</ID>
  </platform>
</ArrayOfplatform>

和类

public class platform : gameElement 
{
    //[Serializable] 
    private float moveSpeed;
    public int ID;
}
public class gameElement
{   
    //[Serializable]
    public float positionX, positionY;
}

如果重要的话,我正在尝试阅读有关使用 Unity 制作的平台游戏的资料。

最佳答案

您的 XML 有几个问题:

  1. XmlSerializer 的数组序列化格式错误 - 元素名称应为 ArrayOfPlatform 而不是 ArrayOfplatform。 (大写 P)
  2. platform.moveSpeed 在您的类中是私有(private)的,不能使用 XmlSerializer 进行序列化或反序列化。
  3. positionX, positionYfloat 类型(值类型),在 XML 中不能有空值。应为 0

修复它,其他一切都很好。

关于c# - 使用 XmlSerializer 反序列化 xml 文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31261195/

相关文章:

java - Android 自定义 map fragment 属性

c# - 如何在使用 XmlWriter 执行 XmlSerialization 时添加命名空间?

c# - root 的 XML 反序列化错误

c# - 这是获得运行异步任务所需时间的最佳方式吗?

c# - 如何强制文本框只接受 2.1 到 9.5 之间的数字

c++ - Qt Designer 在加载 ui 时返回错误

android - 通过引用颜色并添加透明度信息来定义颜色?

c# - 如何序列化List<IFilter>(诺基亚成像SDK)?

c# - <nunit2> 工作不正常

c# - 如何避免使用反射访问类的私有(private)成员?