J'ai un client WCF qui doit générer une requête contenant ce fragment XML:Comment générer un élément xsi: nil avec des attributs?
<reason xsi:nil="true" nullFlavor="NA" typeCode="RSON" />
Le schéma est déterminé par le serveur et ne sont pas sous mon contrôle. Le code de proxy généré a une classe pour l'élément raison contenant (entre autres) les propriétés nullFlavor
et typeCode
. Le proxy utilise XmlSerializer.
Comment puis-je générer un tel fragment? Le XmlSerializer n'émet l'attribut xsi:nil
que si le membre correspondant est null. Et si c'est nul, il ne peut pas très bien avoir des propriétés qui seront émises en attributs!
BTW, le fragment est conforme à la spécification d'instance de schéma XML, qui stipule qu'un élément nul ne peut contenir aucun élément enfant ou texte interne, mais peut contenir attributs.
Cela fonctionne comme un charme quand tout simplement sérialisation/désérialisation messages xml, mais intégré dans une demande de WCF, ce qui provoque le WSDL à considérer invalide: System.InvalidOperationException: élément de schéma 'attribut' nommé 'nil' de l'espace de noms 'http://www.w3.org/2001/XMLSchema-instance'. L'espace de noms cible d'une déclaration d'attribut, qu'elle soit locale ou globale, ne doit pas correspondre à http://www.w3.org/2001/XMLSchema-instance. – oerkelens