I am trying to read an xml using xml serialzation
however when I am trying to read the XML I am getting that the list of items called "Project" on my xml is empty. however I have quite a lot of them.
I think the problem in my code is how I describe my XML into structure.
I am attaching my xml and my code would be happy for assistant.
XML:
<MotProjects>
<Project name="IAR-PROJECT_PM_COMPLETE_PARTITION_2 -> M65_COMPLETE_JS702159_Release_vB17.110" exec="0">
<Defines name="PROJECT_PM_TYPE = PROJECT_PM_LE_PARTITION_2,SOFTWARE_TYPE = RELEASE_VER" />
<Make name="C:\p4client\System\PowerMax_PRO\src\project\IAR Project\PM_Pro.ewp" />
<Include name="C:\p4client\System\PowerMax_PRO\src\sw_def.h" />
<Ref_mot name="C:\P4client\System\PowerMax_PRO\bin\PM-LE\part-II\B17.110\Release\M65_COMPLETE_JS702159_Release_vB17.110.mot" />
<Folder name="C:\p4client\System\PowerMax_PRO\src\project\IAR Project\Project_Release_256k\Exe" />
<MotCommand name="C:\Program Files (x86)\IAR Systems\Embedded Workbench 5.4\common\bin\IarBuild.exe" />
<Param4MotCommand name="-build Project_Release_256k PM_Pro_256k.mot" />
<ExtraDefine name="" />
<MotImage name="" exec="2">
<Boot_path name="" />
<Rsu_path name="" />
<Release_path name="" />
<Image_path name="" />
<Catalog_number name="" />
<Additional_text name="" />
</MotImage>
<Package name="" exec="3">
<Release_path name="" />
<Rsu_path name="" />
<Migration_path name="" />
<Default_path name="" />
<Old_Release_path name="" />
<Old_Default_path name="" />
<Package_path name="" />
<Catalog_number name="" />
<Additional_text name="" />
</Package>
<MigrationAndDevicesBin name="new MigrationAndDevicesBin project" exec="4">
<Migration id="0" productType="PMAX" swVersion="00.00.00" pathname="" />
<Device id="1" productType="IOV" swVersion="" pathname="" />
<Device id="2" productType="EXP33" swVersion="" pathname="" />
<Device id="3" productType="KP250" swVersion="" pathname="" />
<Device id="4" productType="" swVersion="" pathname="" />
<Device id="5" productType="" swVersion="" pathname="" />
<Catalog_number name="JS######" />
<OutputFile pathname="" />
</MigrationAndDevicesBin>
<SerialFlashHexImage name="new SerialFlashHexImage project" exec="5">
<File id="0" fileType="RSU" pathname="" />
<File id="1" fileType="Main" pathname="" />
<File id="2" fileType="Default" pathname="" />
<File id="3" fileType="MIG" pathname="" />
<Catalog_number name="JS######" />
<OutputFile pathname="" />
</SerialFlashHexImage>
<Flasher name="CreateHexFile" exec="6">
<Item name="port" value="" />
<Item name="default_mot_file_full_path" value="" />
<Item name="flasher_exe_full_path" value="" />
</Flasher>
</Project>
<Project name="IAR-PROJECT_DEFAULT_GENERAL_PM_LE_PARTITION_2 -> M65_JXXXXXX-vB17.110_PartII_gen" exec="0">
<Defines name="PROJECT_PM_TYPE = PROJECT_PM_LE_PARTITION_2,SOFTWARE_TYPE = DOWNLOAD_VER,PROJECT_PM_DEFAULT_TYPE = GEN_GSM_DEF" />
<Make name="C:\p4client\System\PowerMax_PRO\src\project\IAR Project\PM_Pro.ewp" />
<Include name="C:\p4client\System\PowerMax_PRO\src\sw_def.h" />
<Ref_mot name="C:\p4client\System\PowerMax_PRO\bin\PM-LE\part-II\B17.110\Special\MOT\M65_JXXXXXX-vB17.110_PartII_gen.mot" />
<Folder name="C:\p4client\System\PowerMax_PRO\src\project\IAR Project\Download_Release_256k\Exe" />
<MotCommand name="C:\Program Files (x86)\IAR Systems\Embedded Workbench 5.4\common\bin\IarBuild.exe" />
<Param4MotCommand name="-build Download_Release_256k PM_Pro_Download_256k.mot" />
<ExtraDefine name="" />
<MotImage name="" exec="2">
<Boot_path name="" />
<Rsu_path name="" />
<Release_path name="" />
<Image_path name="" />
<Catalog_number name="" />
<Additional_text name="" />
</MotImage>
<Package name="" exec="3">
<Release_path name="" />
<Rsu_path name="" />
<Migration_path name="" />
<Default_path name="" />
<Old_Release_path name="" />
<Old_Default_path name="" />
<Package_path name="" />
<Catalog_number name="" />
<Additional_text name="" />
</Package>
<MigrationAndDevicesBin name="new MigrationAndDevicesBin project" exec="4">
<Migration id="0" productType="PMAX" swVersion="00.00.00" pathname="" />
<Device id="1" productType="IOV" swVersion="" pathname="" />
<Device id="2" productType="EXP33" swVersion="" pathname="" />
<Device id="3" productType="KP250" swVersion="" pathname="" />
<Device id="4" productType="" swVersion="" pathname="" />
<Device id="5" productType="" swVersion="" pathname="" />
<Catalog_number name="JS######" />
<OutputFile pathname="" />
</MigrationAndDevicesBin>
<SerialFlashHexImage name="new SerialFlashHexImage project" exec="5">
<File id="0" fileType="RSU" pathname="" />
<File id="1" fileType="Main" pathname="" />
<File id="2" fileType="Default" pathname="" />
<File id="3" fileType="MIG" pathname="" />
<Catalog_number name="JS######" />
<OutputFile pathname="" />
</SerialFlashHexImage>
<Flasher name="CreateHexFile" exec="6">
<Item name="port" value="" />
<Item name="default_mot_file_full_path" value="" />
<Item name="flasher_exe_full_path" value="" />
</Flasher>
</Project>
</MotProjects>
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
namespace XMLParser
{
[XmlRoot("MotProjects")]
public class XMLStructure
{
[XmlArrayItem("Project")]
List<Project> LProject;
public XMLStructure()
{
LProject = new List<Project>();
}
public class Project
{
[XmlAttribute("name")]
public string name;
[XmlAttribute("exec")]
public string exec;
[XmlElement("Include")]
public NameElement Include;
[XmlElement("Ref_mot")]
public NameElement Ref_mot;
[XmlElement("Folder")]
public NameElement Folder;
[XmlElement("MotCommand")]
public NameElement MotCommand;
[XmlElement("Param4MotCommand")]
public NameElement Param4MotCommand;
[XmlElement("ExtraDefine")]
public NameElement ExtraDefine;
[XmlElement("Package")]
public Package MYPackage;
[XmlElement("MotImage")]
public MotImage Mot_Image;
[XmlElement("MigrationAndDevicesBin")]
public MigrationAndDevicesBin _MigrationAndDevicesBin;
[XmlElement("SerialFlashHexImage")]
public SerialFlashHexImage MYSerialFlashHexImage;
[XmlElement("Flasher")]
public Flasher MFlasher;
public Project()
{
name = "";
exec = "";
Include = new NameElement();
Ref_mot = new NameElement();
Folder = new NameElement();
MotCommand = new NameElement();
Param4MotCommand = new NameElement();
ExtraDefine = new NameElement();
Mot_Image = new MotImage();
MYPackage = new Package();
_MigrationAndDevicesBin = new MigrationAndDevicesBin();
MYSerialFlashHexImage = new SerialFlashHexImage ();
MFlasher = new Flasher();
}
public class NameElement
{
[XmlElement("name")]
public string name;
public NameElement()
{
name = "";
}
}
public class MotImage
{
[XmlAttribute("name")]
public string name;
[XmlAttribute("exec")]
public string exec;
[XmlElement("Boot_path")]
public NameElement Boot_path;
[XmlElement("Rsu_path")]
public NameElement Rsu_path;
[XmlElement("Release_path")]
public NameElement Release_path;
[XmlElement("Image_path")]
public NameElement Image_path;
[XmlElement("Catalog_number")]
public NameElement Catalog_number;
[XmlElement("Additional_text")]
public NameElement Additional_text;
public MotImage()
{
name = "";
exec = "";
Boot_path = new NameElement();
Rsu_path = new NameElement();
Release_path = new NameElement();
Image_path = new NameElement();
Catalog_number = new NameElement();
Additional_text = new NameElement();
}
public class NameElement
{
[XmlElement("name")]
public string name;
public NameElement()
{
name = "";
}
}
}
public class Package
{
[XmlAttribute("name")]
public string name;
[XmlAttribute("exec")]
public string exec;
[XmlAttribute("Release_path")]
public NameElement Release_path;
[XmlAttribute("Rsu_path")]
public NameElement Rsu_path;
[XmlElement("Migration_path")]
public NameElement Migration_path;
[XmlElement("Default_path")]
public NameElement Default_path;
[XmlElement("Old_Release_path")]
public NameElement Old_Release_path;
[XmlElement("Old_Default_path")]
public NameElement Old_Default_path;
[XmlElement("Package_path")]
public NameElement Package_path;
[XmlElement("Additional_text")]
public NameElement Additional_text;
[XmlElement("Catalog_number")]
public NameElement Catalog_number;
public Package()
{
name = "";
exec = "";
Release_path = new NameElement();
Rsu_path = new NameElement();
Migration_path = new NameElement();
Default_path = new NameElement();
Old_Default_path = new NameElement();
Old_Release_path = new NameElement();
Rsu_path = new NameElement();
Release_path = new NameElement();
Catalog_number = new NameElement();
Additional_text = new NameElement();
}
public class NameElement
{
[XmlElement("name")]
public string name;
public NameElement()
{
name = "";
}
}
}
public class MigrationAndDevicesBin
{
[XmlAttribute("name")]
public string name;
[XmlAttribute("exec")]
public string exec;
[XmlArray("Device")]
public List<Device> _Device;
[XmlElement("Catalog_number")]
public NameElement Catalog_number;
[XmlElement("OutputFile")]
public OutputFile OutPutFile;
public MigrationAndDevicesBin()
{
name = "";
exec = "";
_Device = new List<Device>();
Catalog_number = new NameElement();
OutPutFile = new OutputFile();
}
}
public class Device
{
[XmlAttribute("id")]
public string id;
[XmlAttribute("productType")]
public string productType;
[XmlAttribute("swVersion")]
public string swVersion;
[XmlAttribute("pathname")]
public string pathname;
public Device()
{
id = "";
productType = "";
swVersion = "";
pathname = "";
}
}
public class OutputFile
{
[XmlElement("pathname")]
public string pathname;
public OutputFile()
{
pathname = "";
}
}
public class SerialFlashHexImage
{
[XmlAttribute("name")]
public string name;
[XmlAttribute("exec")]
public string exec;
public SerialFlashHexImage()
{
name="";
exec="";
}
public class File
{
[XmlAttribute("name")]
public string name;
[XmlAttribute("exec")]
public string exec;
[XmlAttribute("id")]
public string id;
[XmlAttribute("fileType")]
public string fileType;
[XmlAttribute("pathname")]
public string pathname;
[XmlElement("OutputFile")]
public OutputFile OutputFile;
[XmlElement("Catalog_number")]
public NameElement Catalog_number;
public File()
{
name = "";
exec = "";
id = "";
fileType = "";
pathname = "";
OutputFile = new OutputFile();
Catalog_number = new NameElement();
}
}
}
public class Flasher
{
[XmlArray("Item")]
public Item items;
public Flasher()
{
items = new Item();
}
public class Item
{
[XmlAttribute("name")]
public string name;
[XmlAttribute("value")]
public string value;
public Item()
{
name = "";
value = "";
}
}
}
}
}
}