Je rencontre des difficultés pour sérialiser l'attribut de données soumis pour les éléments suivants, en particulier l'élément submittedData qui est un tableau et chaque élément submittedData a un tableau de champs (1 seul par données soumises dans cet exemple). Le convertisseur xsd.exe ne gère pas non plus la partie submittedData.C# Sérialisation XML à l'objet avec plusieurs tableaux
Toutes les recommandations seraient grandement appréciées.
<?xml version="1.0" encoding="UTF-8"?>
<forms>
<site>https://www.sample.com</site>
<export_date>2017-08-09T12:04:11-04:00</export_date>
<webform name="form A">
<crmFormId>form_A</crmFormId>
<version>1.0</version>
<formData>
<WEBFORMNODESTATUS>Unpublished</WEBFORMNODESTATUS>
<submittedData>
<field>
<crmFieldKey>aEXTERNALID</crmFieldKey>
<crmFieldValue>1000</crmFieldValue>
</field>
</submittedData>
<submittedData>
<field>
<crmFieldKey>bEXTERNALID</crmFieldKey>
<crmFieldValue>2000</crmFieldValue>
</field>
</submittedData>
</formData>
</webform>
<webform name="form_B">
<crmFormId>2</crmFormId>
<version>1.0</version>
<formData>
<WEBFORMNODESTATUS>Unpublished</WEBFORMNODESTATUS>
<submittedData>
<field>
<crmFieldKey>cEXTERNALID</crmFieldKey>
<crmFieldValue>1001</crmFieldValue>
</field>
</submittedData>
<submittedData>
<field>
<crmFieldKey>dEXTERNALID</crmFieldKey>
<crmFieldValue>1002</crmFieldValue>
</field>
</submittedData>
</formData>
</webform>
</forms>
Voici la classe que j'utilise. Tout va bien jusqu'à ce que j'essaie de travailler avec l'élément submittedData.
[XmlRoot()]
public class forms
{
private string siteField;
private string export_dateField;
private formsWebform[] webformField;
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string site
{
get
{
return this.siteField;
}
set
{
this.siteField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string export_date
{
get
{
return this.export_dateField;
}
set
{
this.export_dateField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute("webform", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public formsWebform[] webform
{
get
{
return this.webformField;
}
set
{
this.webformField = value;
}
}
}
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class formsWebform
{
private string crmFormIdField;
private string versionField;
private formsWebformFormData formDataField;
private string nameField;
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string crmFormId
{
get
{
return this.crmFormIdField;
}
set
{
this.crmFormIdField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string version
{
get
{
return this.versionField;
}
set
{
this.versionField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute("formData", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public formsWebformFormData formData
{
get
{
return this.formDataField;
}
set
{
this.formDataField = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string name
{
get
{
return this.nameField;
}
set
{
this.nameField = value;
}
}
}
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class formsWebformFormData
{
private string wEBFORMNODESTATUSField;
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string WEBFORMNODESTATUS
{
get
{
return this.wEBFORMNODESTATUSField;
}
set
{
this.wEBFORMNODESTATUSField = value;
}
}
private List<SubmittedDataFields> submittedDataField;
[System.Xml.Serialization.XmlArray("submittedData")]
[System.Xml.Serialization.XmlArrayItem("field")]
public List<SubmittedDataFields> submittedData
{
get
{
return this.submittedDataField;
}
set
{
this.submittedDataField = value;
}
}
}
public partial class SubmittedDataFields
{
private formsWebformFormDataSubmittedDataField[] data;
public formsWebformFormDataSubmittedDataField[] fields
{
get{
return this.data;
}
set {
this.data = value;
}
}
}
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class formsWebformFormDataSubmittedDataField
{
private string crmFieldKeyField;
private string crmFieldValueField;
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string crmFieldKey
{
get
{
return this.crmFieldKeyField;
}
set
{
this.crmFieldKeyField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string crmFieldValue
{
get
{
return this.crmFieldValueField;
}
set
{
this.crmFieldValueField = value;
}
}
}
Merci pour la réponse. Cependant, submittedData est également un tableau ou une liste. L'idée est que chaque formulaire a plusieurs formulaires remplis avec plusieurs champs. J'ai fait une solution à .. [XmlElement ("submittedData")] chaîne publique crmFieldKey –
J'ai fait une solution à .. [XmlElement ("submittedData")] public string crmFieldKey à [XmlElement ("crmFieldKey")] public string crmFieldKey –
Faire quelques modifications - peut-être fonctionner. –