2012-09-15 227 views
0

我称这个类identityC#XML反序列化

namespace Game.World.Entities 
{ 
    [XmlRoot("Identity")] 
    public class Identity 
    { 
     public string Name { get; set; } 
     public string Texture { get; set; } 
     public string HeroType { get; set; } 

     public Stats Stats { get; set; } 
     public ActiveAbilitites ActiveAbilitites { get; set; } 
     public PassiveAbilitites PassiveAbilitites { get; set; } 
    } 

    public class ActiveAbilitites 
    { 
     [XmlElement("AbilityId")] 
     public List<int> ActiveAbilitiesId { get; set; } 
    } 

    public class PassiveAbilitites 
    { 
     [XmlElement("AbilityId")] 
     public List<int> PassiveAbilitiesId { get; set; } 
    } 

    public class Stats 
    { 
     public int Health { get; set; } 
     public int MagicDamage { get; set; } 
     public int PhysicalDamage { get; set; } 
     public int Defense { get; set; } 
    } 
} 

我已经系列化该类到一个XML文档:

<?xml version="1.0" encoding="utf-8"?> 
<Identity xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Name>foo</Name> 
    <Texture>player</Texture> 
    <HeroType>tracker</HeroType> 
    <Stats> 
    <Health>5</Health> 
    <MagicDamage>5</MagicDamage> 
    <PhysicalDamage>5</PhysicalDamage> 
    <Defense>5</Defense> 
    </Stats> 
    <ActiveAbilitites> 
    <AbilityId>1</AbilityId> 
    <AbilityId>2</AbilityId> 
    <AbilityId>3</AbilityId> 
    </ActiveAbilitites> 
    <PassiveAbilitites> 
    <AbilityId>1</AbilityId> 
    <AbilityId>2</AbilityId> 
    <AbilityId>3</AbilityId> 
    </PassiveAbilitites> 
</Identity> 

然而,当我尝试和deseralize的XML为identity对象我获取错误

xml文档(2,2)有错误.....
System.InvalidOperationException不是预期的。
在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderList1.Read6_ArrayOfIdentity()

现在因为XML来自seralization这是绊倒我,所以我不知道为什么我不能deseralize它。我假设我错过了某处的注释标记,任何有关此事的帮助都会令人惊叹。

+0

您能告诉我们您用于机器人序列化和反序列化的代码吗? –

+0

事实证明这是非代码化的代码,如果我从.xml文件读取它,它工作正常,但是当我从字符串中去除xml时,我的错误发生了。当我得到它与一个字符串工作时,我会更新这个评论 编辑 不知道我做了什么去搞乱deseralizer,但我现在有一个字符串的工作。 var reader = new StringReader(template); var identity =(Identity)serializer.Deserialize(reader); – zidsal

+0

请不要在问题中提供答案。我删除它。 –

回答

0

事实证明,这是一个问题,我如何去代码化。我不知道我做了什么来搞砸这么多,但我假设这是对我的字符串阅读器。我刚刚复制并粘贴了一些Deserialize from string instead TextReader的示例代码,现在工作正常。