J'ai un élément qui peut avoir plusieurs types (pas ma conception). L'élément lui-même est un type complexe avec une séquence de sous-éléments et le XML est généré à partir de la sérialisation d'une propriété, et cette propriété renvoie un type de classe de base. Ainsi, lorsque le XML est généré, le type finit par être défini dans le XML, quel que soit l'objet. Par exemple:Validation XML pour un élément avec plusieurs types?
<Answer xsi:type="AnswerBool">
<Value xsi:type="xsd:int">-1</Value>
</Answer>
Ou peut-être:
<Answer xsi:type="AnswerString">
<Value xsi:type="xsd:string">-1</Value>
</Answer>
La propriété C# ressemble à ceci:
public AnswerBase Answer
{
get { return mViewAnswer; }
set { mViewAnswer = value; }
}
Donc, si la variable nViewAnswer est de type AnswerBool alors le premier exemple XML est généré lors de la sérialisation. S'il est de type AnswerString, le second exemple XML est généré. J'ai donc travaillé sur une sorte de XSD pour le XML. Cependant, quand il s'agit de validation, je n'arrive pas à faire fonctionner ça. Évidemment, une option serait de modifier la structure du XML et d'avoir des sous-éléments de l'élément "Answer". Cependant, cela nécessiterait un remaniement des fonctionnalités existantes que je préférerais éviter si possible. Donc ....
Y a-t-il un moyen de faire en sorte qu'un élément ait différents types définis dans le schéma?
Ou existe-t-il un moyen de configurer le XSD afin qu'il ignore le type xsi: pour cet élément lors de la validation? J'ai joué avec anyAttribute processContents mais je ne crois pas que cela aidera. Est-ce que je vais être bloqué en retravaillant comment le XML est formé?
Il serait utile de voir comment cela fonctionne, vous pouvez répondre à votre propre question et l'accepter comme réponse. Au moins de cette façon, il donne un article complet à quelqu'un d'autre à lire s'il essaie de faire quelque chose de similaire. :) –
Une fois que je l'ai travaillé à 100%, je ferai exactement cela. Je suis coincé sur un dernier numéro. – Eves