Xml Sérialisation avec 2 préfixes et 2 namespaces differents [Résolu]

cs_veridik 13 Messages postés mercredi 11 mai 2005Date d'inscription 24 juillet 2013 Dernière intervention - 8 janv. 2009 à 16:07 - Dernière réponse : cs_veridik 13 Messages postés mercredi 11 mai 2005Date d'inscription 24 juillet 2013 Dernière intervention
- 9 janv. 2009 à 16:38
<hr />
Bonjour,

Je sérialise des objets métiers avec 2 préfixes et 2 espaces de nommage differents.
J'y arrive mais le problème se situe au niveau de la déclaration des espaces de nommage dans mon xml.

Ci dessous mon fichier xml sérialisé :

<?xml version="1.0"?>

 
    Advanced .NET

   
   
      Florian

      Biquet

   

 

Mais je voudrais que mon namespace2 soit dans la balise qui contient des prefix2, exemple ci-dessous :

<?xml version="1.0"?>

 
    Advanced .NET

   
    www.namespace2.com">
      Florian

      Biquet

   

 

1) Est ce que cela est possible ?

2) Si c'est possible comment spéficier ce formalisme dans mon code.

Merci,

Ci dessous mon code :




// Book1










BookClass

.


Book

book1 =


new





BookClass

.


Book

();



BookClass

.


Price

price1 =


new





BookClass

.


Price

();



AutorClass

.


Autor

autor1 =


new





AutorClass

.


Autor

();price1.currency =



"USD"

;
price1.price = 49.99M;


// M suffix for decimal literals


book1.Title =


"Advanced .NET"

;
book1.price = price1;
autor1.FirstName =


"Florian"

;
autor1.Lastname =


"Biquet"

;
book1.autor = autor1;



// Add books to collection








BookClass

.


Books

books =


new





BookClass

.


Books

();
books.alBooks.Add(book1);



/* Create XML namespace pairs */








XmlSerializerNamespaces

namespaces =


new





XmlSerializerNamespaces

();
namespaces.Add(


"prefix1"

,


"www.namespace1.com"

);
namespaces.Add(


"prefix2"

,


"www.namespace2.com"

);



/* Serialize to file */








Stream

stream =


new





FileStream

(


@"c:\Namespaces.xml"

,


FileMode

.Create,


FileAccess

.Write,


FileShare

.Write);



XmlSerializer

serializer =


new





XmlSerializer

(


typeof

(


BookClass

.


Books

));
serializer.Serialize(stream, books, namespaces);
stream.Close();Ma classe livre :

[



Serializable

]
[System.Xml.Serialization.


XmlRoot

(ElementName =


"Livre"

)]



public





class





BookClass


{



public





class





Price


{



// Serialize the currency field as an attribute with the given namspace


[System.Xml.Serialization.


XmlAttribute

(Namespace =



www.namespace1.com


)]



public





string

currency;



// Serialize the price field as an attribute with the given namspace


[System.Xml.Serialization.


XmlAttribute

(Namespace =



www.namespace1.com


)]



public





decimal

price;
}



public





class





Book


{



// Serialize the title field as an element with the given namspace


[System.Xml.Serialization.


XmlElement

(Namespace =



www.namespace1.com


)]



public





string

Title;



// Serialize the price field as an element with the given namspace


[System.Xml.Serialization.


XmlElement

(Namespace =



www.namespace1.com


)]



public





Price

price;



// Serialize the price field as an element with the given namspace


[System.Xml.Serialization.


XmlElement

(Namespace =



www.namespace1.com


)]



public





AutorClass

.


Autor

autor;}



public





class





Books


{



// Serilize the alBooks filed with the given namespace


[System.Xml.Serialization.


XmlElement

(


typeof

(


Book

), Namespace =



www.namespace1.com


)]



public





ArrayList

alBooks =


new





ArrayList

();
}

}

Ma Classe Auteur :

[

Serializable]
[System.Xml.Serialization.
XmlRoot(ElementName =
"Autor",Namespace=
www.namespace2.com)]

public
class
AutorClass
{

public
class
Autor
{

// Serialize the title field as an element with the given namspace
[System.Xml.Serialization.
XmlElement(Namespace =
www.namespace2.com)]

public
string FirstName;

// Serialize the price field as an element with the given namspace
[System.Xml.Serialization.
XmlElement(Namespace =
www.namespace2.com)]

public
string Lastname;}
}

 

 
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
cs_veridik 13 Messages postés mercredi 11 mai 2005Date d'inscription 24 juillet 2013 Dernière intervention - 9 janv. 2009 à 16:38
3
Merci
J'ai trouvé la solution à mon problème :

Il suffit de déclarer mon deuxieme namespace dans la classe concerné.

Exemple dans ma classe autor, j'ai ajouté :

[

XmlNamespaceDeclarations]

public
XmlSerializerNamespaces namespaces;

public Autor()
{
       namespaces=
new
XmlSerializerNamespaces();
       namespaces.Add(
"prefix2",
www.namespace2.com);
}
Voici le xml généré :

<?xml version="1.0"?>

 
    Advanced .NET

   
    www.namespace2.com">
      Florian

      Biquet

   

 

Merci cs_veridik 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_veridik

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.