0 votes

Comment supprimer PROPREMENT xmln:xsi et xmlns:xsd de la sérialisation des dictionnaires xml ?

Question : J'utilise une classe de dictionnaire sérialisable, trouvée à l'adresse
http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspx
pour sérialiser un dictionnaire.
Cela fonctionne bien avec la classe d'exemple ci-dessous.

<System.Xml.Serialization.XmlRoot("ccl")> _
Public Class ccl
    <System.Xml.Serialization.XmlElement("name")> _
    Public xx As String = ""

    <System.Xml.Serialization.XmlElement("date")> _
    Public yy As String = ""

    '<System.Xml.Serialization.XmlElement("adict")> _
    'Public ww As New SerializableDictionary(Of String, String)

End Class

Mais il ajoute un fichu xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance AND xmlns:xsd="http://www.w3.org/2001/XMLSchema ? à la balise

Maintenant, je l'ai corrigé en changeant la classe du dictionnaire en

       Dim ns As System.Xml.Serialization.XmlSerializerNamespaces = New System.Xml.Serialization.XmlSerializerNamespaces()
        'Add an empty namespace and empty value
        ns.Add("", "")

        If True Then
            valueSerializer.Serialize(writer, value, ns)
        Else
            valueSerializer.Serialize(writer, value)
        End If

qui supprime ces attributs.

Mais cela signifie également qu'il ne les écrit pas si je les spécifie. Comment puis-je ajouter ces deux espaces de noms vides à la classe en utilisant des attributs ?

Je l'ai changé en

<System.Xml.Serialization.XmlRoot("ccl", Namespace:="")> _

mais cela ne semble pas fonctionner.

1voto

KenL Points 360

Voici le code que j'utilise pour sérialiser mon objet o

XmlSerializerNamespaces XSN = new XmlSerializerNamespaces();
XSN.Add("", "");
XmlWriterSettings XWS = new XmlWriterSettings();
XWS.OmitXmlDeclaration = true;
StringBuilder XmlStr = new StringBuilder();
XmlSerializer x = new XmlSerializer(o.GetType());
x.Serialize(XmlTextWriter.Create(XmlStr, XWS), o, XSN);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X