begin process at 2010 02 09 18:43:14
  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:: < vider un fichier xml dans un autre fichier xml [ par zikofs ] salut tout le monde, en fait je viens de développer une petite application qui gére des déplacements et qui les stocke dans un fichier XML maintenant problème xml et xslt [ par c_ensias ] Bonjour à tous,J'ai un fichier xml dont j'ai appliqué un filtre xslt pour en extraire des données.Je voudrais que la sortie soit un fichier XML qui re ajout fichier xml à la fin d'un autre fichier XML [ par zikofs ] salut tout le monde. j'ai un projet pu je drois ajouterle contenu d'un fichier XML à lafin d'un autre fichier XML. j'ai fait une interface ou je selec Le XML pour fichier de configuration? [ par bubbathemaster ] Comme je viens de me mettre à .NET, je me suis dit que j'allais laisser tomber les vieux fichiers ini pour la configuration au profit du XML. 3 points prb avec la lecture Xml et les accents [ par DarkTiteuf ] Voila, ma génération plante dès que j'ai un accent dans une balise ou un accent dans un attribut de cette balise. Comment je peux faire ? Y a t-il une DataSet et Xml [ par c_ensias ] Bonjour,J'ai un fichier xml. Mon problème est le suivant :Je veux charger les données de ce fichier xml dans un Dataset en C# .Merci d'avance.Cordiale afficher à partir d'un DataSet [ par yassinchaouki ] Bonjour,J'ai fichier xml. Mon problème est le suivant :Je veux charger les données de ce fichier xml dans un DataSet, ensuite je veux parcourir les do


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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 : 0,312 sec (3)

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