The list gets created in the CLevelXml, but non of the CImageXml records are created?
I seem to be able to Deserialize the root node using the following code:
TextAsset taXmlFile = (TextAsset) Resources.Load("TPK.3");
StringReader pStringReader = new StringReader(taXmlFile.text);
//pStreamReader.Read(); // Skip the byte order mark - seems to cause Unity issues
XmlTextReader pXmlTextReader = new XmlTextReader(pStringReader);
XmlRootAttribute xRoot = new XmlRootAttribute();
xRoot.ElementName = "CLevelXml";
xRoot.IsNullable = true;
XmlSerializer deserializer = new XmlSerializer(typeof(CLevelXml),xRoot);
var container = deserializer.Deserialize(pXmlTextReader);
CLevelXml pCLevelXml = (CLevelXml) container;
pXmlTextReader.Close();
And here is a subset of the CLevelXml Class:
namespace FG.TrailerParkKing3.Data.Xml
{
[XmlRoot("CLevelXml"), XmlType("CLevelXml")]
[XmlInclude(typeof(CImageXml))]
public class CLevelXml
{
#region Fields
[XmlArray("m_pCImageXmlList"),XmlArrayItem("CImageXml")]
public List<CImageXml> m_pCImageXmlList = new List<CImageXml>();
Finally, here is CImageXml Class:
namespace FG.TrailerParkKing3.Data.Xml
{
[XmlRoot("m_pCImageXmlList"), XmlType("CImageXml")]
//[XmlType("m_pCImageXmlList")]
public class CImageXml
{
#region Fields
[XmlElement("m_iOID")]
public int m_iOID;
[XmlElement("m_sName")]
public string m_sName;
public SpriteSheetEnum m_pSpriteSheetEnum;
public string m_sFileName;
public List<CCircleXml> m_pCCircleXmlList = new List<CCircleXml>();
#endregion
#region Initialization
public CImageXml() { }
public void Initialize()
{
}
#endregion
}
}
Here is a subset of the XML:
<?xml version="1.0" encoding="utf-8"?>
<CLevelXml>
<m_pCImageXmlList>
<Item>
<m_iOID>4</m_iOID>
<m_sName>Original Trailer Park Foreground</m_sName>
<m_pSpriteSheetEnum>Exterior</m_pSpriteSheetEnum>
<m_sFileName>Original.Trailer.Park-Foreground</m_sFileName>
<m_pCCircleXmlList>
<Item>
<m_vecPosition>-7.51944971 -488.936646</m_vecPosition>
<m_iRadius>83</m_iRadius>