C # XslCompiledTransform utilisant XmlDocument ou XPathDocument lors de la modification est nécessaire?

StackOverflow https://stackoverflow.com/questions/1902145

Question

Je vais sur un couple d'hypothèses ici:

  1. XPathDocument est pas modifiable.
  2. XmlDocument est modifiable.
  3. XPathDocument est plus efficace pour XslCompiledTransform.

Cela étant le cas (et s'il vous plaît me corriger si je me trompe), serait-il mieux (plus efficace) à:

  1. modifications à l'aide de la XmlDocument, puis convertir en un XPathDocument avant la transformation. Est-il un moyen optimisé pour le faire cela?
  2. Il suffit de coller avec le XmlDocument par la transformation.

Un peu d'histoire, je reçois un xml complexe d'un webservice, puis utilisez XPath pour trouver des éléments qui doivent être modifiés, puis utilisez un xslt pour créer html.

Merci d'avance pour l'aide.

Était-ce utile?

La solution

Cela dépend de la quantité de modification est nécessaire, la taille des données est, et si vous êtes familier avec xslt. Si « non » à la dernière, il suffit d'utiliser XDocument etc (dernière fois que je courais un profil, XDocument était plus rapide que XmlDocument pour mes données - exécuter vos propres tests). Utilisez XDocument.Load / XDocument.Parse, trouvez votre noeud, modifiez-le et enregistrez-le.


Si vous doit utilisation xslt, alors XDocument n'est pas vraiment une option; une fois que vous avez chargé dans XmlDocument vous pourriez aussi bien rester avec XmlDocument -. Je ne recommanderais pas l'analyse syntaxique dans secondes DOM

Bien sûr, il fait on se demande: pourquoi modifier le xml en dehors de xslt si vous allez utiliser xslt; peut-être juste traduire au cours de la xslt?

Pour obtenir une réponse précise à 100% pour vos données vous aurez besoin de profil, bien sûr. Mais les choses telles que l'utilisation appropriée des constructions de regroupement xslt feront souvent beaucoup plus de différence que XmlDocument vs XPathDocument.

Autres conseils

Il suffit d'utiliser la classe XmlDocument pour la transformation. Il devrait être un énorme document pour voir vraiment un gain de performance. Vous pouvez compiler une instance statique de la classe XslCompiledTransform si vous prévoyez de l'utiliser plusieurs fois.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top