Deserialize nested xml
I have an xml document for my game which contains a number of decks which are populated with specific cards. My xml file looks like this:
<?xml version="1.0" encoding="utf-8" ?>
<CardCollection>
<Cards>
<Deck DeckId="1">
<Card Id="1">
<CardElement1></CardElement1>
<CardElement2></CardElement2>
</Card>
<Card Id="2">
<CardElement1></CardElement1>
<CardElement2></CardElement2>
</Card>
<Card Id="3">
<CardElement1></CardElement1>
<CardElement2></CardElement2>
</Card>
</Deck>
<Deck DeckId="2">
<Card Id="1">
<CardElement1></CardElement1>
<CardElement2></CardElement2>
</Card>
</Deck>
</Cards>
</CardCollection>
I have a class Card.cs which looks like the following:
using System.Xml.Serialization;
public class Card {
[XmlAttribute("Id")]
public int id;
[XmlElement("CardElement1")]
public string cardElement1;
[XmlElement("CardElement2")]
public string cardElement2;
}
And a class Deck.cs :
using System.Xml.Serialization;
public class Card {
[XmlAttribute("DeckId")]
public int deckId;
[XmlArray("Card")]
public Card[] cards;
}
I'm using a class called CardContainer to populate a List decks with this information:
using System.Collections.Generic;
using System.Xml.Serialization;
using System.IO;
using UnityEngine;
[XmlRoot("CardCollection")]
public class CardContainer {
[XmlArray("Cards")]
[XmlArrayItem("Deck")]
public List<Deck> decks = new List<Deck>();
public static CardContainer Load(string path)
{
TextAsset xml = Resources.Load<TextAsset>(path);
XmlSerializer serializer = new XmlSerializer(typeof(CardContainer));
StringReader reader = new StringReader(xml.text);
CardContainer cards = serializer.Deserialize(reader) as CardContainer;
reader.Close();
return cards;
}
}
I can get hold of the Id's of the decks using this snippet of code:
CardContainer cardContainer = CardContainer.Load(path);
foreach(Deck deck in cardContainer.decks){
Debug.Log(deck.deckId);
}
However I have no idea how to populate the Card-array in Deck with the cards belonging to each deck. Is there anyone who know how to do this?
Your answer
Follow this Question
Related Questions
Deserializing XML not working with WebGL 1 Answer
Cant save file into Android internal memory 1 Answer
Inserting '¡' into an XML file. 1 Answer
Nested class deserialization 2 Answers
copy data folder to another location 0 Answers