Pregunta

Me voy de un par de supuestos aquí:

  1. XPathDocument no se puede editar.
  2. XmlDocument es editable.
  3. XPathDocument es más eficiente para XslCompiledTransform.

En ese caso (y por favor, corríjanme si me equivoco), sería mejor (más eficiente) a:

  1. hacer modificaciones utilizando el XmlDocument, a continuación, convertir a una XPathDocument antes de la transformación. ¿Hay una forma optimizada que hacer esto?
  2. Sólo se adhieren a la XmlDocument a través de la transformación.

Algunos antecedentes, me estoy poniendo un xml compleja desde un servicio web, a continuación, utilizar XPath para encontrar algunos elementos que necesitan ser modificados, a continuación, utilizar un XSLT para crear html.

Gracias de antemano por la ayuda.

¿Fue útil?

Solución

Depende de la cantidad de modificación que se requiere, qué tan grande es que los datos, y si usted está familiarizado con XSLT. Si "no" a la última, sólo tiene que utilizar XDocument etc (la última vez me encontré con un perfil, XDocument era más rápido que XmlDocument para mis datos - ejecutar sus propias pruebas). Utilice XDocument.Load / XDocument.Parse, encontrar su nodo, editarlo y guardarlo.


Si debe el uso de XSLT, entonces XDocument no es realmente una opción; una vez que haya cargado en XmlDocument que también podría mantenerse con XmlDocument -. Yo no recomendaría el análisis en un segundo DOM

Por supuesto, hace que nos preguntamos: ¿por qué modificar el XML fuera de XSLT si se va a utilizar XSLT; tal vez sólo traducir durante el XSLT?

Para obtener un 100% de respuesta precisa para sus datos que necesita para el perfil it, por supuesto. Pero las cosas tales como el uso adecuado de las construcciones XSLT agrupación menudo harán un más diferencia más grande que XmlDocument vs XPathDocument.

Otros consejos

Sólo tiene que utilizar la clase XmlDocument para la transformación. Tendría que ser un enorme documento para ver realmente una ganancia de rendimiento. Es posible que desee compilar una instancia estática de la clase XslCompiledTransform si planea usar varias veces.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top