[C# XML Serialize .net 2.0]

[C# XML Serialize .net 2.0] - C#/.NET managed - Programmation

Marsh Posté le 11-07-2008 à 14:23:47    

Bonjour.
 
Je cherche à modifier la valeur de l'attribut

Code :
  1. xmlns:xsd="http://www.w3.org/2001/XMLSchema"

qui apparait sur mon élément racine lors de sa sérialisation. Explication :
 
1) Je génère ma classe proxy à partir de l'outil xsd.exe
2) J'obtiens mon fichier de classe .cs avec les attributs de sérialisation suivants :

Code :
  1. [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432" )]
  2.     [System.SerializableAttribute()]
  3.     [System.Diagnostics.DebuggerStepThroughAttribute()]
  4.     [System.ComponentModel.DesignerCategoryAttribute("code" )]
  5.     [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
  6.     [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false, ElementName = "myRootElementPerso" )]


 
3) Lorsque j'instancie un objet à partir de cette classe, puis que je le sérialise, au niveau du xml j'ai :  

Code :
  1. <myRootElementPerso xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">


 
Ma question est la suivante : existe t'il un attribut du (dans System.Xml.Serialization.XmlRootAttribute ?) que je pourrais rajouter en plus de ceux existant déjà au niveau de ma classe proxy afin de spécifier que l'attribut root

Code :
  1. xmlns:xsd

ne soit plus http://www.w3.org/2001/XMLSchema mais soit par exemple c:\Xsd\myXsdPerso.xml
 
Qq sait t'il si on peut gérer cet attribut simplement via les attributs [System.Xml.etc...] sur la classe proxy ?
Ou dois je forcément intervenir sur ma fonction de serialisation et lui spécifier que je veux un xmlns:xsd 'maison' ?


Message édité par Sagoth le 11-07-2008 à 14:24:39
Reply

Marsh Posté le 11-07-2008 à 14:23:47   

Reply

Marsh Posté le 11-07-2008 à 14:45:27    

Bon, j'ai trouvé sans trop de pb avec le serializer, il suffit de specifier le namespace xsd et sa valeur (ici une chaîne que j'appelle xsdFullPath)

Code :
  1. XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
  2. ns.Add("xsd", xsdFullPath.Trim());
  3. XmlSerializer serializer = new XmlSerializer(this.GetType());
  4. MemoryStream memStream = new MemoryStream();
  5. XmlWriter writer = new XmlTextWriter(memStream, Encoding.UTF8);
  6. serializer.Serialize(writer, this, ns);


 
En ce qui concernet les attributs au niveau de la classe proxy, je n'ai pas trouvé :??:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed