J'ai le code VB.NET suivant que j'utilise pour transformer du XML en nouveau XML, que je continue ensuite à traiter. Ceci est un processus unique, pas quelque chose qui est fait plusieurs fois, donc pas d'efficacité à gagner de la mise en cache, autant que je peux voir.XslCompiledTransform de XmlDocument à XmlDocument
Le code fonctionne, mais je constate des problèmes de performances. J'apprécie que les problèmes de performance peuvent être liés à la XSLT.
J'ai aussi trouvé des cas de développeurs ayant des problèmes de performance avec XslCompiledTransform, en particulier sur un environnement 64 bits, qui peut être un bug (http://connect.microsoft.com/VisualStudio/feedback/details/508748)
Ni les éventuels problèmes de performances XSLT ni des problèmes avec XslCompiledTransform sont sous mon contrôle , mais il est possible qu'il y ait des problèmes avec mon code. Je veux juste m'assurer que ma méthode de transformation est la méthode la plus efficace pour ce dont j'ai besoin.
Public Function TransformUsingXPathNavigator(ByVal InputXML As XmlDocument, ByVal XSLTLocation As String) As XmlDocument
Dim theNavigator As XPathNavigator
theNavigator = InputXML.CreateNavigator()
Dim theTransform As XslCompiledTransform = New XslCompiledTransform()
theTransform.Load(XSLTLocation)
Dim outputXML As New XmlDocument()
Using writer As XmlWriter = outputXML.CreateNavigator().AppendChild()
theTransform.Transform(theNavigator, writer)
End Using
Return outputXML
End Function
Quelqu'un peut-il signaler des problèmes avec mon code?
Modifier: Ceci est une transformation unique, donc pas de boucles.
Cette transformation se produit-elle une seule fois (par XSLT) ou plusieurs fois? Si ce code est exécuté dans une boucle, essayez de créer l'objet 'XslCompiledTransform' en dehors de la boucle et passez-le à la place de' XSLTLocation'. Moins la méthode 'Load()' s'exécute, mieux c'est. – psmay