Frage

Ich werde auf ein paar Annahmen hier:

  1. XPathDocument nicht bearbeitet werden.
  2. XmlDocument ist editierbar.
  3. XPathDocument ist effizienter für XslCompiledTransform.

Wenn das der Fall (und bitte korrigieren Sie mich, wenn ich falsch bin), wäre es besser, (sehr effizient) bis:

  1. Nehmen Sie Änderungen der Verwendung XmlDocument, wandelt dann ein XPathDocument vor der Transformation. Gibt es eine optimierte Art und Weise zu tun das?
  2. Just-Stick mit dem XmlDocument durch die Transformation.

Einige Hintergrund, ich bin von einem Webservice eine komplexe XML bekommen, dann verwenden XPath einige Elemente zu finden, die geändert werden müssen, verwenden Sie dann eine Xslt html zu erstellen.

Vielen Dank im Voraus für die Hilfe.

War es hilfreich?

Lösung

Es hängt davon ab, wie viel Änderung erforderlich ist, wie groß die Daten vorhanden sind, und ob Sie mit Xslt vertraut sind. Wenn „nicht“ auf den letzten, nur verwenden XDocument etc (letztes Mal lief ich ein Profil, XDocument war schneller als XmlDocument für meine Daten - führen Sie Ihre eigenen Tests). Verwenden XDocument.Load / XDocument.Parse, finden Sie Ihre Knoten, bearbeiten und speichern es.


Wenn Sie muss Verwendung Xslt, dann XDocument ist nicht wirklich eine Option; wenn Sie es in XmlDocument geladen haben könnten Sie auch Aufenthalt mit XmlDocument - ich würde es in Parsen ein nicht empfehlen zweiten DOM

.

Natürlich macht es fragen wir uns: Warum die xml ändern außerhalb von xslt, wenn Sie Gebrauch xslt werden; vielleicht nur während der Xslt übersetzen?

Um eine 100% genaue Antwort zu erhalten für Ihre Daten Sie brauchen es zum Profil, natürlich. Aber die Dinge wie sinnvoller Einsatz von Xslt Konstrukten Gruppierung wird oft machen viel größerer Unterschied als XmlDocument vs XPathDocument.

Andere Tipps

Verwenden Sie einfach die XmlDocument Klasse für die Transformation. Es müßte ein massives Dokument sein, um wirklich einen Leistungsgewinn zu sehen. Möglicherweise möchten Sie eine statische Instanz der XslCompiledTransform Klasse kompilieren, wenn Sie es über die Verwendung mehrmals planen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top