C#中 XML反序列化失败的问题
小弟目前写一游戏的编辑器,生成XML文件。然后游戏主程序读XML,游戏是用JAVA写的在手机上跑,没出问题。目前就编辑器有问题,实在搞不懂了。编辑器生成的序列化内容如下:
[Serializable]
public class GameObject
{
/// <summary>
/// 所有怪物
/// </summary>
public WatchedList<Monster> Monsters;
/// <summary>
/// 所有资源
/// </summary>
public WatchedList<Resources> Resources;
/// <summary>
/// 所有动画
/// </summary>
public WatchedList<Animation> Animations;
/// <summary>
/// 所有武器
/// </summary>
public WatchedList<Weapon> Weapons;
/// <summary>
/// 所有子弹
/// </summary>
public WatchedList<Bullet> Bullets;
}
WatchedList是一个继承于List的类,多了几个简单的功能而已
[Serializable]
public class WatchedList<T> : List<T>
{
public void Add(T item)
{
base.Add(item);
ObjectEvent(this, new ObjectEventArgs<T>(item, ObjectEventType.Add));
}
public bool Remove(T item)
{
if (base.Remove(item))
{
ObjectEvent(this, new ObjectEventArgs<T>(item, ObjectEventType.Del));
return true;
}
return false;
}
public event ObjectEventHandler<T> ObjectEvent;
public WatchedList(IEnumerable<T> collection)
: base(collection)
{
}
public WatchedList()
: base()
{
}
public WatchedList(int capacity)
: base(capacity)
{
}
}
每个具体的Bullet等内容大致如下:
[Serializable]
public class Bullet:ICloneable
{
[DescriptionAttribute("类型ID")
, CategoryAttribute("基本信息")]
public int TypeID { get; set; }
[DescriptionAttribute("武器名称")
, CategoryAttribute("基本信息")]
public String Name { get; set; }
}
但现在出现个问题,能成功的序列化到磁盘中,但读不出来(读写都是同一个编辑器)
比如序列化好的下列XML
<?xml version="1.0"?>
<GameObject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Monsters>
<Monster>
<TypeID>1</TypeID>
<Name>新建怪物种类</Name>
<MonsProp>
<Level>0</Level>
<Life>0</Life>
<Def>0</Def>
<Atk>0</Atk>
<Agi>0</Agi>
<Weight>0</Weight>
<WalkSpeed>0</WalkSpeed>
<FlySpeed>0</FlySpeed>
</MonsProp>
<Items>
<WeaponID>0</WeaponID>
<FlightVehicleID>0</FlightVehicleID>
</Items>
</Monster>
</Monsters>
<Resources>
<Resources>
<ResID>1</ResID>
<Name>新建资源</Name>
</Resources>
</Resources>
<Animations>
<Animation>
<AniID>1</AniID>
<Name>新建动画</Name>
<NumX>0</NumX>
<NumY>0</NumY>
<NumFrame>0</NumFrame>
<PicWidth>0</PicWidth>
<PicHeight>0</PicHeight>
<PicX>0</PicX>
<PicY>0</PicY>
</Animation>
</Animations>
<Weapons>
<Weapon>
<TypeID>1</TypeID>
<Name>新建武器类型</Name>
<IcoName>BulletIco</IcoName>
<Bullets>
<TheBullet>
<BulletTypeID>1</BulletTypeID>
<Speed>
<X>300</X>
<Y>0</Y>
</Speed>
<Offset>
<X>0</X>
<Y>0</Y>
</Offset>
</TheBullet>
</Bullets>
<AutoCast>false</AutoCast>
<BulletAmount>-1</BulletAmount>
</Weapon>
</Weapons>
<Bullets />
</GameObject>
每次读取都提示如下错误:XML文档(22,5)中有错误。
就不懂了这有啥错误啊,同一个数据结构序列化都没问题,咋反序列化就出问题呢?
是不是这个WatchList写得有问题啊,怎么改才好呢?
我测试了下 只要某个List里没有任何内容就不会出错,不然在第一个物体单位那里就会读出...哎~ 希望有人能帮忙提示下小弟到底哪里错了 --------------------编程问答-------------------- WatchedList 类缺少一个构造函数 --------------------编程问答-------------------- GameObject也少了构造函数
另外public WatchedList<Monster> Monsters= new WatchedList<Monster>();
初始化一下会比较好
补充:.NET技术 , C#