簡體   English   中英

XSL從XmlElement轉換為XmlElement

[英]XSL Transform from XmlElement to XmlElement

XmlElement beforeTransform =getXmlElementForTransform();
XmlElement afterTransfrom;

XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("my.xslt", settings, new XmlUrlResolver());

我的密碼

xslt.Transform("input.xml","output.xml");

所需的輸出

xslt.Transform(beforeTransform,afterTransform);
ThirdPartyFunction(afterTransform);

大約有15個Transform重載,但是我找不到適合我的重載。 我知道沒有使用轉換的直接XmlElement輸出(或沒有輸入XmlElement對象),所以我可以在輸入和輸出端進行轉換。

對於輸入,您應該能夠使用XmlElement.CreateNavigator() 對於輸出,您可以通過XmlWriter流到StringWriter ,然后讀回:

        using (var writer = new StringWriter())
        {
            using (var xmlWriter = XmlWriter.Create(writer))
            {
                xslt.Transform(beforeTransform.CreateNavigator(), xmlWriter);
            }
            var tempDoc = new XmlDocument();
            tempDoc.LoadXml(writer.ToString());
            afterTransfrom = tempDoc.DocumentElement;
        }

注意-未經過編譯測試。

順便說一句,如果您願意切換到Linq-to-XML ,則可以使用XContainer.CreateReaderXContainer.CreateWriterXElement容器直接流進XElement容器。

如果您有要使用XslCompiledTransform.Transform的結果填充的XmlElement對象,則可以使用targetNode.CreateNavigator().AppendChild()創建XmlWriter並使用Transform寫入XmlWriter的多個重載之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM