J'ai un document XML qui ressemble également à la similarité il échoue à sérialiser sur cet objet p> Ça échoue car la plaquette de paramètre vide élément, car s'il contient des éléments d'enfant, il désère bien. p> Comment puis-je obtenir cela pour travailler? p> Ceci est mon code de désérialisation P> var serializer = new XmlSerializer(typeof(Report));
return (Report)serializer.Deserialize(source.CreateReader());
4 Réponses :
Il ressemble au contenu de xelement code> - si pas em> null - ne peut pas être un élément XML vide. En d'autres termes, vous ne seriez pas en mesure de sérialiser que em> xml dans votre exemple d'une représentation / une instance en mémoire de votre rapport
rapport code>. P>
C'est la conclusion que je suis venue, j'ai parlé au fournisseur de ce XML pour éliminer les éléments nuls
Cela ressemble à un symptôme de ne pas sérialiser correctement le XML dans le premier cas, ce qui est probablement fait avec .NET 1.0 XMLSérialiseur. Pour sérialiser correctement minocRuces = "0" code> éléments (E.g. éléments qui ne doivent pas exister dans le XML), vous avez besoin d'un
BOOL paramètretemplatesPeecified code> élément de la classe. Voir Stackoverflow.com/Questtions/2330001/ ...
Vous pouvez implémenter l'interface ixmlSerializable code> sur votre classe de rapport et écraser les méthodes ReadxML et WRITOXML. P>
Utilisez islamllable = true
J'ai créé la méthode suivante pour corriger le texte XML:
Public Function XMLReaderPatch(rawXML As String) As String If String.IsNullOrEmpty(rawXML) Then Return rawXML 'Pattern for finding items similar to <name*/> where * may represent whitespace followed by text and/or whitespace Dim pattern As String = "<(\S+)(\s[^<|>]*)?/>" 'Pattern for replacing with items similar to <name*></name> where * may represent whitespace followed by text and/or whitespace Dim replacement As String = "<$1$2></$1>" Dim rgx As New Text.RegularExpressions.Regex(pattern) Return rgx.Replace(rawXML, replacement) End Function
Par intérêt, cela fonctionne-t-il bien s'il est
paramètretemplate> code>?
Non, mais le retirer complètement lui permet de sérialiser.
Que voulez-vous stocker exactement dans un
xelement code> dans votre fichier XML alors ?? Semble un peu étrange .....
@marc_s, il est plus XML, mais il n'est pas «fortement typé», comme le reste du fichier XML est. Ce n'est même pas nécessaire si le rapport n'a pas de paramètres.
Pourquoi pas juste ajouter [xmlelement (islamlable = true)]
@Dan, parce que ce n'est pas nul. Et je l'ai essayé et ça n'a pas fonctionné: p