[英]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.CreateReader
和XContainer.CreateWriter
從XElement
容器直接流進XElement
容器。
如果您有要使用XslCompiledTransform.Transform
的結果填充的XmlElement
對象,則可以使用targetNode.CreateNavigator().AppendChild()
創建XmlWriter
並使用Transform
寫入XmlWriter
的多個重載之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.