Anwenden der XSLT-auf in-memory-XML und die Rückkehr in-memory-XML
Ich bin auf der Suche für eine statische Funktion in der .NET framework, die nimmt ein XML-Codeausschnitt, und eine XSLT-Datei, gilt die transformation in den Speicher, und gibt die transformierten XML-Daten.
Ich würde dies gerne tun:
string rawXml = invoiceTemplateDoc.MainDocumentPart.Document.InnerXml;
rawXml = DoXsltTransformation(rawXml, @"c:\prepare-invoice.xslt"));
//... do more manipulations on the rawXml
Alternativ statt und zurückgeben von Zeichenfolgen, könnte es sein, nehmen und zurückgeben XmlNodes.
Gibt es eine solche Funktion?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein wenig know-feature ist, dass Sie in der Tat verwandeln Sie Daten direkt in eine
XmlDocument
DOM oder in einer LINQ-to-XML -XElement
oderXDocument
(über dieCreateWriter()
- Methode) ohne Durchlauf durch einen text bilden, indem man eineXmlWriter
Instanz, um Sie zu füttern mit Daten.Vorausgesetzt, dass der XML-Eingabe ist
IXPathNavigable
und dass Sie geladen haben, eineXslCompiledTransform
Beispiel, können Sie Folgendes tun:Haben Sie dann das transformierte Dokument in der
taget
Dokument. Beachten Sie, dass es auch andere überlastungen auf dertransform
um Ihnen zu erlauben, um pass XSLT-Argumente und-Erweiterungen in der stylesheet.Wenn Sie möchten, können Sie schreiben Sie Ihre eigene statische Helfer oder die Erweiterung Methode zur Durchführung der Transformation, wie Sie es brauchen. Allerdings, kann es eine gute Idee, den cache der Transformation, da das laden und kompilieren ist es nicht kostenlos.
Können Sie die
StringReader
undStringWriter
Klassen :XmlDocument
schon (er verwendet….Document.InnerXml
), mitStringReader
scheint überflüssig.Haben Sie bemerkt, dass es die
XsltCompiledTransform
Klasse?