La réponse Xml que je reçois est la suivante :
<response>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:com.someDomain.item">
<name>some name</disc-name>
<description>some description</disc-desc>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:com.someDomain.item">
<name>some name</disc-name>
<description>some description</disc-desc>
</item>
<otherValue>12.1</otherValue>
</response>
Ma classe est décorée comme telle :
[XmlElement("item")]
public Item[] Items{get;set;}
[XmlElement("otherValue")
public string OtherValue{get;set;}
Lorsque je tente de désérialiser le Xml ci-dessus vers la classe décrite, je reçois une erreur de "Namespace prefix 'java' is not defined". L'ajout de l'attribut "namespace" à la classe résout l'erreur d'analyse (cependant, le xml est alors déformé par rapport à l'original).
c'est-à-dire
[XmlElement(ElementName="item",Namespace="java")]
Comment dois-je décorer une propriété donnée pour qu'elle corresponde à un nouvel espace de noms ? Ou, comment dois-je définir correctement l'espace de noms ?
Je ne suis pas non plus à 100% sur l'utilisation d'un tableau de stock pour ma section énumérable, mais je pense que la question de l'espace de nom prend le dessus pour le moment. Toute idée ou réflexion est la bienvenue !
UPDATE :
Je pense qu'il vaut mieux reformuler la question maintenant que j'ai fait un peu le tour de la question :
Comment utiliser un XmlElementAttribute (ou un autre attribut) pour avoir une classe qui peut se sérialiser dans le snippet d'élément ci-dessus, y compris les balises xsi ?
En ce qui concerne mon problème particulier, je me suis rendu compte que puisque la réponse Xml est hors de mon contrôle, je n'ai pas besoin des attributs xsi pour commencer. Pour contourner le problème de sérialisation, je fais simplement ce qui suit (l'élément XmlElement contient le document original ci-dessus) :
foreach(XmlNode node in element)
node.Attributes.RemoveAll();
Je ne fais que noter ma solution de contournement personnelle, car il ne s'agit pas d'une solution.