Besoin d'un peu d'aide. J'ai un XML avec les mêmes éléments imbriqués les uns dans les autres. J'ai été capable de créer une classe C# en utilisant la question Convert XML String to Object, en collant le code XML spécial dans une classe. Le fait est que le code continue de créer une classe pour chaque élément imbriqué. Je veux juste une classe générique pour tous les éléments enfants.Activer le code XML imbriqué avec les mêmes éléments dans la classe
Voici le XML exemple:
<?xml version="1.0" encoding="utf-8" ?>
<CompanyFolders>
<company title="My Company">
<departments>
<department title="Retail Operations">
<folders>
<folder tite="Model Store"/>
<folder tite="Retail Ops Manual"/>
<folder tite="VM Guides & planograms"/>
<folder tite="About our Team"/>
</folders>
</department>
<department title="Buying">
<folders>
<folder tite="Gold Jewellery">
<folders>
<folder tite="Gold">
<folders>
<folder title="Color Range"/>
<folder title="Launch Packs"/>
<folder title="Grading"/>
<folder title="Herolines"/>
<folder title="Top Sellers"/>
<folder title="Launch & price Change Calendar"/>
</folders>
</folder>
<folder tite="Branded">
<folders>
<folder title="Color Range"/>
<folder title="Launch Packs"/>
<folder title="Grading"/>
<folder title="Herolines"/>
<folder title="Top Sellers"/>
<folder title="Launch & price Change Calendar"/>
</folders>
</folder>
</folders>
</folder>
<folder tite="Rings">
<folders>
<folder tite="Monthly Sales by store by diamond brand" />
<folder tite="Line lists & core ranges" />
<folder tite="Current Hero Lines" />
<folder tite="Diamond ambassador conference call details and agenda" />
</folders>
</folder>
</folders>
</department>
<department title="Property">
<folders>
<folder tite="Maintenance Forms"/>
<folder tite="Portal for reporting maintenance issues"/>
<folder tite="Security Advice"/>
<folder tite="Security Policy"/>
<folder tite="H&S Policy and awareness"/>
<folder tite="H&S Forms"/>
<folder tite="Insurance Documents"/>
<folder tite="Out of Emergencies Contact list"/>
</folders>
</department>
</departments>
</company>
</CompanyFolders>
Et la classe créée: mais je voulais juste
namespace MyXML
{
/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class CompanyFolders
{
private CompanyFoldersCompany[] companyField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("company")]
public CompanyFoldersCompany[] company
{
get
{
return this.companyField;
}
set
{
this.companyField = value;
}
}
}
/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class CompanyFoldersCompany
{
private CompanyFoldersCompanyDepartment[] departmentsField;
private string titleField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayItemAttribute("department", IsNullable = false)]
public CompanyFoldersCompanyDepartment[] departments
{
get
{
return this.departmentsField;
}
set
{
this.departmentsField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string title
{
get
{
return this.titleField;
}
set
{
this.titleField = value;
}
}
}
/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class CompanyFoldersCompanyDepartment
{
private CompanyFoldersCompanyDepartmentFolder[] foldersField;
private string titleField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayItemAttribute("folder", IsNullable = false)]
public CompanyFoldersCompanyDepartmentFolder[] folders
{
get
{
return this.foldersField;
}
set
{
this.foldersField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string title
{
get
{
return this.titleField;
}
set
{
this.titleField = value;
}
}
}
/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class CompanyFoldersCompanyDepartmentFolder
{
private CompanyFoldersCompanyDepartmentFolderFolder[] foldersField;
private string titeField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayItemAttribute("folder", IsNullable = false)]
public CompanyFoldersCompanyDepartmentFolderFolder[] folders
{
get
{
return this.foldersField;
}
set
{
this.foldersField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string tite
{
get
{
return this.titeField;
}
set
{
this.titeField = value;
}
}
}
/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class CompanyFoldersCompanyDepartmentFolderFolder
{
private CompanyFoldersCompanyDepartmentFolderFolderFolder[] foldersField;
private string titeField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayItemAttribute("folder", IsNullable = false)]
public CompanyFoldersCompanyDepartmentFolderFolderFolder[] folders
{
get
{
return this.foldersField;
}
set
{
this.foldersField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string tite
{
get
{
return this.titeField;
}
set
{
this.titeField = value;
}
}
}
/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class CompanyFoldersCompanyDepartmentFolderFolderFolder
{
private string titleField;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string title
{
get
{
return this.titleField;
}
set
{
this.titleField = value;
}
}
}
}
vous pouvez donc remarquer que CompanyFoldersCompanyDepartmentFolderFolder et CompanyFoldersCompanyDepartmentFolderFolderFolder sont créés pour les dossiers intérieurs, une sorte de CompanyFoldersCompanyDepartmentFolder récursif.
J'apprécie l'aide.
Merci jdweng. Erreur de titre était juste une faute de frappe. Merci de me le dire. J'ai essayé la solution que vous avez fournie et je m'interroge sur l'utilisation. Comment puis-je itérer entre les éléments et d'autres choses. Cheers – user17685
Chaque classe a un objet List <> pour que vous puissiez itérer comme n'importe quelle liste. Les dossiers sont récursifs, vous devez donc utiliser un algorithme récursif pour parcourir les classes imbriquées. – jdweng