Appliquer XSLT sur la mémoire XML et reviennent en mémoire XML
Je suis à la recherche d'une fonction statique dans l' .NET framework qui prend un fragment de code XML et un fichier XSLT, s'applique à la transformation de la mémoire, et renvoie le transformé en XML.
Je voudrais faire ceci:
string rawXml = invoiceTemplateDoc.MainDocumentPart.Document.InnerXml;
rawXml = DoXsltTransformation(rawXml, @"c:\prepare-invoice.xslt"));
//... do more manipulations on the rawXml
Sinon, au lieu de prendre et de retour de chaînes, il pourrait être la prise et le retour XmlNodes.
Est-il une telle fonction?
OriginalL'auteur Jan Willem B | 2010-05-18
Vous devez vous connecter pour publier un commentaire.
Un peu de savoir caractéristique est que vous pouvez en effet transformer les données directement dans un
XmlDocument
DOM ou dans un LINQ-to-XMLXElement
ouXDocument
(via leCreateWriter()
méthode) sans avoir à passer par une forme de texte en obtenant unXmlWriter
instance de les nourrir avec des données.En supposant que votre entrée XML est
IXPathNavigable
et que vous avez chargé unXslCompiledTransform
exemple, vous pouvez effectuer les opérations suivantes:Vous avez alors la transformée de document dans le
taget
document. Notez qu'il existe d'autres surcharges sur letransform
pour vous permettre de passer XSLT arguments et les extensions dans la feuille de style.Si vous le souhaitez, vous pouvez écrire votre propre assistance statique ou de l'extension de la méthode pour effectuer la transformation que vous en avez besoin. Cependant, il peut être une bonne idée pour mettre en cache les transformer depuis le chargement et la compilation il n'est pas libre.
OriginalL'auteur Lucero
Vous pouvez utiliser le
StringReader
etStringWriter
classes :XmlDocument
déjà (il utilise….Document.InnerXml
), à l'aide deStringReader
semble superflu....et assez inefficace, parce que le XML est sérialisé à une chaîne, puis analysé de nouveau.
en effet, je n'ai pas vu qu'il était déjà à l'aide d'un XmlDocument...
ce n'est pas, en fait. Il ressemble, mais c'est le SDK OpenXML pour la lecture des fichiers docx qui a une API très similaire à la XmlDocument de l'API, et de l'API ne sont pas compatibles. Je pense donc que le downvote n'est pas justifiée par qui.
OriginalL'auteur Thomas Levesque
Avez-vous remarqué qu'il y est le
XsltCompiledTransform
de la classe?XmlDocument implémente IXPathNavigable, de sorte que vous pouvez passer en entrée directement. Pour la sortie, voir stackoverflow.com/questions/1346995/...
OriginalL'auteur Tomalak