Woes Deserializing this XML!

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>

It appears the following is not correct:

[XmlArray(“m_pCImageXmlList”),XmlArrayItem(“CImageXml”)]
public List m_pCImageXmlList = new List();

it has to be:

[XmlArray(“m_pCImageXmlList”),XmlArrayItem(“Item”)]
public List m_pCImageXmlList = new List();