2011-07-25 41 views
2

我使用C#2.0和我有下面的代碼轉換的XMLDocument:如何使用XSLT在C#2.0

XmlDocument doc = new XmlDocument(); 
    doc.LoadXml(GetListOfPagesInStructureGroup(m_Page.Id)); 

在上面我加載我的方法,它返回字符串,現在一些加工後的XMLDocument上面的xmldocument我想在上面的XMLDocument上應用XSLT來根據XSLT呈現我想要的結果,最後我的函數將返回整個呈現的XML作爲字符串

請建議!!

回答

7

下面的解決方案請建議:

 XslCompiledTransform xslTransform = new XslCompiledTransform(); 
     StringWriter writer = new StringWriter();   
     xslTransform.Load("xslt/RenderDestinationTabXML.xslt"); 
     xslTransform.Transform(doc.CreateNavigator(),null, writer); 
     return writer.ToString(); 

謝謝!

+3

哈哈,'.CreateNavigator'精彩,謝謝! :) – Chiramisu

2

嘗試XslCompiledTransform類。

+0

我有XMLDocument與我和從XSLT呈現後,我想我的同一個XMlDocument更新 –

+0

@Manu:您將*總是*得到一個新的文檔(這是API的設計方式),只是忘記輸入文檔,並使用新文檔(例如,在轉換後設置'myDoc = resultOfTransform')。 – Richard

0

「我希望我的同一個XMlDocument更新」 - 它不能像那樣工作;輸出與輸入分離。如果這很重要,只需使用StringWriter或MemoryStream作爲目標,然後從生成的輸出中重新加載XmlDocument

請特別考慮:xslt變換的輸出確實是而不是必須是xml,並且還有:xslt最有可能在操作期間使用節點樹;在原地改變結構將會非常困難。

+2

如果你知道輸出是XML,那麼輸出到一個新的'XmlDocument'創建的'XmlWriter'將會避免一個序列化/解析循環。 – Richard

1

有很多使用XSLT文件轉換XML文件格式不同,像下面的網站上的例子:

XslTransform myXslTransform = new XslTransform(); 
XsltSettings myXsltSettings = new XsltSettings(); 
myXsltSettings.EnableDocumentFunction = true; 
myXslTransform.Load("transform.xsl"); 
myXslTransform.Transform("input.xml", "output.xml"); 

然而,這僅僅是一個局部的答案,我想是能夠從Web表單獲取XML輸入數據,並將其用作輸入數據而不是'.xml'文件,但還沒有找到任何具體示例,同樣使用Visual Studio,我可以看到可用的不同構造函數和方法而且我沒有看到一個接受字符串格式的xml數據的人,所以如果有人能提供這樣的例子,那將是非常有幫助的。

+0

你有沒有設法解決這個問題。 IE:使用輸入數據而不是xml文件 – variable