2012-09-15 200 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的示例代碼,現在工作正常。