Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4646 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] -Résolu- XmlTransform est deprecated... Ok mais...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#] -Résolu- XmlTransform est deprecated... Ok mais...

n°1400659
Arjuna
Aircraft Ident.: F-MBSD
Posté le 04-07-2006 à 20:41:17  profilanswer
 

J'ai un programme.
Il génère un flux XML.
J'ai une feuille XSL.
Je veux récupérer, sous forme d'un TextWriter, le résultat de la transformation de mon flux XML.
 
Comment je fais ?
Là franchement, je cherche à droite à gauche, à chaque fois je trouve des exemple qui partent de fichiers sur le disque, et les écrivent sur le disque...
http://msdn2.microsoft.com/fr-fr/library/66f54faw.aspx
 
Moi je veux bien que XslCompiledTransform soit plus rapide, mais si c'est pour passer obligatoirement par le disque, je ne vois pas trop là où je gagne...
 
En gros, ce truc me va bien, sauf que mon "books.xml" est un XmlDocument.
Je veux bien passer par un XPathDocument, mais il est readonly.
Et bosser dans un XmlDocument, faire un save dans un ms, puis recharger le ms dans un XPathDocument, faire la transformation, et enfin envoyer à mon TextWriter, je trouve ça plus que moyen... Surtout si le document Xml en question est volumineux !
 

Code :
  1. // Execute the transformation.
  2. XslCompiledTransform xslt = new XslCompiledTransform();
  3. xslt.Load("output.xsl" );
  4. MemoryStream ms = new MemoryStream();
  5. xslt.Transform(new XPathDocument("books.xml" ), null, ms);
  6. // Load the results into an XPathDocument object.
  7. ms.Seek(0, SeekOrigin.Begin);
  8. XPathDocument doc = new XPathDocument(ms);


 
Une idée ?
 
Actuellement, j'ai ça :
 

Code :
  1. protected override void Render(System.Web.UI.HtmlTextWriter writer)
  2.     {
  3.         Response.Clear();
  4.         Response.ContentEncoding = System.Text.Encoding.UTF8;
  5.         Response.ContentType = "text/html";
  6.         XmlDocument xmlPage = new XmlDocument();
  7.         xmlPage.Load(MapPath(string.Format("Pages/{0}.xml", this.page)));
  8.         XmlDocument resPage = RenderPage(xmlPage);
  9.         XslTransform xslPage = new XslTransform();
  10.         xslPage.Load(MapPath(string.Format("Pages/xsl/{0}.xsl", xmlPage.SelectSingleNode("page/template" ).Attributes["name"].Value)));
  11.         xslPage.Transform(resPage.CreateNavigator(), null, Response.Output);
  12.         if (Request.QueryString["debug"] != null)
  13.         {
  14.             resPage.Save(MapPath("/debug.xml" ));
  15.         }
  16.         resPage = null;
  17.         xslPage = null;
  18.         xmlPage = null;
  19.     }


 
Note de fin de post : c'est résolu (Arjuna, ou comment se prendre la tête deux heures pour rien)
 
En fait :
 

Code :
  1. XslCompiledTransform xslPage = new XslCompiledTransform(true);
  2.         xslPage.Load(MapPath(string.Format("Pages/xsl/{0}.xsl", xmlPage.SelectSingleNode("page/template" ).Attributes["name"].Value)));
  3.         xslPage.Transform(resPage.CreateNavigator(), null, Response.Output);


 
C'est la même syntaxe, y'a pas un caractère de différent :o
 
Faut dire qu'ils sont cons, XPathNavigator et XPathNavigable c'est la même chose :o (du moins, le cast est implicite entre les deux)
Et moi qui trouvais pas comment faire un Navigable à partir du Navigator :o

mood
Publicité
Posté le 04-07-2006 à 20:41:17  profilanswer
 

n°1400753
Arjuna
Aircraft Ident.: F-MBSD
Posté le 04-07-2006 à 23:41:14  profilanswer
 

Bon, ben chuis content, j'ai fait une refonte complète de mon truc pendant le match (ça m'intéresse tellement...)
Maintenant c'est plus clair, plus rapide, et en plus je sais faire plein de trucs que je pouvais pas faire avant :bounce:
 
(ouais, je sais, ça intéresse personne, et en plus vous savez pas de quoi je parle mais c'est pas grave :spamafote:)


Message édité par Arjuna le 04-07-2006 à 23:41:40
n°1401381
Lamarmotte
Posté le 05-07-2006 à 18:51:48  profilanswer
 

et si ca intéresse qqlun! moi!
Pourrais-tu me dire comment tu as fait? ca me soule aussi de voire un deprecated à chaque compilation...

n°1401400
Arjuna
Aircraft Ident.: F-MBSD
Posté le 05-07-2006 à 19:19:11  profilanswer
 

Ben la syntaxe ci-dessus justement, y'a l'exemple "avant" et "après" ;)

n°1402246
Lamarmotte
Posté le 06-07-2006 à 18:49:44  profilanswer
 

Oups je n'avais pas remarqué. Toutes mes excuses et merci pour le code.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] -Résolu- XmlTransform est deprecated... Ok mais...

 

Sujets relatifs
[RESOLU] concatenation[Résolu] Génération fichier PDF depuis fichier XML, en utilisant FOP
[résolu] Passage de variable javascript vers flash avec iframe[Résolu] [Eclipse] Un peu d'ordre !
[RESOLU] Javascript/DOM -> enlever des tags[résolu]fixer colonne
Couper une image pour en faire une vignette[résolu][Résolu][PHP] Problème avec header()
[résolu]modification d'une colonne[résolu]Loadvars Rapide
Plus de sujets relatifs à : [C#] -Résolu- XmlTransform est deprecated... Ok mais...


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)