Prévenir <xsi:nil=“true”> sur Nullable Types de Valeur lors de la Sérialisation XML
J'ai ajouté quelques nullable types de valeur de ma classe sérialisable. - Je effectuer une sérialisation à l'aide XmlSerializer
mais lorsque la valeur est définie à null
, je reçois un nœud vide avec xsi:nil="true"
. C'est le bon comportement que j'ai trouvé à la Attribut Xsi:nil en charge de la Liaison.
Est-il un moyen de désactiver cette option, de sorte que rien ne s'affiche lorsque le type de valeur est null
?
OriginalL'auteur Ryall | 2010-02-12
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème.. voici l'un des endroits que j'ai lu sur la gestion des valeurs null types de valeur lors de la sérialisation XML: http://stackoverflow.com/questions/244953/serialize-a-nullable-int
ils mentionnent sur l'utilisation de modèles built-in, comme la création de propriétés supplémentaires pour nullable types de valeur. comme une propriété nommée
vous devez soit ajouter
soit
public bool ShouldSerializeABC() {return ABC.HasValue;}
ou public
bool ABCSpecified { get { return ABC.HasValue; } }
je n'avais que de la sérialisation xml à envoyer à un stockées sql proc, donc moi aussi a évité de changer mes classes. Je suis en train de faire un
[not(@xsi:nil)]
de vérifier tous les nullable éléments dans mon .valeur() de la requête.xsi:nil="true"
nœuds.roger. merci!
OriginalL'auteur Chin
J'ai trouvé que le
public bool ABCSpecified
a été le seul qui a travaillé avec .NET 4.0. J'ai également eu à ajouter de la XmlIgnoreAttribute
C'était ma solution complète pour supprimer une Chaîne de caractères nommée ABC dans la Référence Web de Ressources.cs fichier:
OriginalL'auteur Rod Wittmier
Toutes les méta méthodes comme Spécifié ou ShouldSerialize est juste une mauvaise programmation de la conception de microsoft .Net de la structure XML. Il devient encore plus compliqué si vous n'avez pas un accès direct pour les classes que vous souhaitez pour sérialiser.
Dans leur méthode de sérialisation il faut juste ajouter un attribut comme "ignoreNullable".
Ma solution actuelle sérialise le xml et puis juste supprime tous les nœuds ayant nil="true" utilisant la fonction suivante.
OriginalL'auteur djmj
J'ai dû ajouter un
ShouldSerialize
méthode pour chaque nullable valeur.OriginalL'auteur Todd Skelton
C'est probablement la moins sophistiquée réponse, mais je l'ai résolu pour moi, avec une simple chaîne de caractères à remplacer.
.Replace(" xsi:nil=\"true\" ", "");
Je suis la sérialisation de la chaîne de toute façon. Je peux enregistrer le fichier plus tard.
Il garde tous mes XmlWriterSettings intacte. Une autre solution je l'ai trouvée tout fait foiré:)
OriginalL'auteur Steffen Nordquist