begin process at 2012 02 10 13:50:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Base de données

 > 

XML

 > 

Xml Sérialisation avec 2 préfixes et 2 namespaces differents


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Xml Sérialisation avec 2 préfixes et 2 namespaces differents

jeudi 8 janvier 2009 à 16:07:38 | Xml Sérialisation avec 2 préfixes et 2 namespaces differents

veridik


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"?>
<Books xmlns:prefix2="www.namespace2.com" xmlns:prefix1="www.namespace1.com">
  <prefix1:alBooks>
    <prefix1:Title>Advanced .NET</prefix1:Title>
    <prefix1:price currency="USD" price="49.99" />
    <prefix1:autor>
      <prefix2:FirstName>Florian</prefix2:FirstName>
      <prefix2:Lastname>Biquet</prefix2:Lastname>
    </prefix1:autor>
  </prefix1:alBooks>
</Books>

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

<?xml version="1.0"?>
<Books xmlns:prefix1="www.namespace1.com">
  <prefix1:alBooks>
    <prefix1:Title>Advanced .NET</prefix1:Title>
    <prefix1:price currency="USD" price="49.99" />
    <prefix1:autor xmlns:prefix2="www.namespace2.com">
      <prefix2:FirstName>Florian</prefix2:FirstName>
      <prefix2:Lastname>Biquet</prefix2:Lastname>
    </prefix1:autor>
  </prefix1:alBooks>
</Books>

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)]
publicclassAutorClass
{

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

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

}
}


 


vendredi 9 janvier 2009 à 16:38:23 | Re : Xml Sérialisation avec 2 préfixes et 2 namespaces differents

veridik

Réponse acceptée !
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]
publicXmlSerializerNamespaces namespaces;

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

<?xml version="1.0"?>
<Books xmlns:prefix1="www.namespace1.com">
  <prefix1:alBooks>
    <prefix1:Title>Advanced .NET</prefix1:Title>
    <prefix1:price currency="USD" price="49.99" />
    <prefix1:autor xmlns:prefix2="www.namespace2.com">
      <prefix2:FirstName>Florian</prefix2:FirstName>
      <prefix2:Lastname>Biquet</prefix2:Lastname>
    </prefix1:autor>
  </prefix1:alBooks>
</Books>




Cette discussion est classée dans : xml, www, namespace, price, com


Répondre à ce message

Sujets en rapport avec ce message

sauvegarder Embedded Resource [ par Smalo ] Désolé je n'ai pas trouvé de Thème plus approprié pour poser ma question.. En fait je voudrais savoir si c'est possible de sauvegarder une ressource e HELP !! XML [ par JCpp ] Ça commence à m'énerver. Grrr.J'ai toujours le même problème :http://www.csharpfr.com/forum.v2.aspx?ID=155596 déclarer un namespace pour pouvoir naviguer dans le XML [ par virgul ] Bonjour,J'ai un webservice qui me retourne un XMLNode seul problème le XML a un namespace vide comment faire pour naviguer (XPath) dedans? Le xml:: < viewer 3D [ par survcopt ] Je cherche à afficher un objet 3D n'importe quel format et le faire bouger par rapport à un repère fixe afin de visualiser l'attitude l'objet en tps r Objet COM compatibilité de compilation entre Windows 7 et Windows XP [ par romain60112 ] Bonjour à tous, Je suis confronté à un problème de compatibilité entre windows XP et windows 7 pour l'exécution d'un objet COM, je m'explique : 1) J Changer dynamiquement le namespace de SoapTypeAttribut [ par smassat ] Bonjour, J'ai un problème avec les références de service dans VS 2010 Un client me fournit un fichier WSDL qui est positionné sur un serveur php. Da copie fichier xml d'un appareil mobile en PC [ par atouihichem ] salut à tous, je voudrais avoir comment copie un fichier xml depuis un appareil mobile windows CE vers mon ordinateur via C# merci à tous. Entity Framework et les champs de valeur null [ par WSTBoss ] Bonjour, je viens de créer un Web Service qui me retourne une liste de contacts que je récupère dans une basse de données MySQL à travers entity fram Aide sur une Somme de Noeud XML [ par vladvonjim ] J'ai du mal à faire la somme de plusieurs n½ud ayant le même nom dans un même fichier XML et j'essaye d'écrire ma variable dans un fichier texte pour Probleme de serialization xml [ par Alyaks973 ] Bonjour à tous ! J'ai un petit soucis avec une séquence de sérialization dans mon application. Pour commence ril s'agit d'une appli pour Windows Pho


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales