2012-01-03 18 views
1

有在微軟網站(即使VOR .NET 4中)應用XSLT轉換到DataSet(ADO.NET)

Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet) 

Dim xslTran As XslTransform = New XslTransform 
xslTran.Load("transform.xsl") 

Dim writer As XmlTextWriter = New XmlTextWriter("xslt_output.html", System.Text.Encoding.UTF8) 

xslTran.Transform(xmlDoc, Nothing, writer) 

http://technet.microsoft.com/en-us/query/8fd7xytc

沒有不幸的XmlDataDocument已被棄用一個很好的例子,但在這種情況下,如何取代它,似乎沒有人會有很好的答案?

回答

2

您可以使用下面的代碼。

使用DataSet.GetXml()得到XML作爲字符串,然後通過解析字符串創建一個XDocument:

string xml = dataSet.GetXml(); 
XDocument document = XDocument.Parse(xml); 

轉換的設置,它的輸出是一樣的,但是使用了XslCompiledTransform:

XslCompiledTransform transform = new XslCompiledTransform(); 
transform.Load("transform.xsl"); 
XmlTextWriter writer = new XmlTextWriter("Output.xml", System.Text.Encoding.UTF8); 

然後您可以使用XslCompiledTransform.Transform()重載,它將讀者作爲第一個參數,您可以從調用XDocument.CreateReader()獲得:

transform.Transform(Document.CreateReader(), writer); 
+0

好吧,沒有直接的方式沒有通過字符串繞道? – Remy 2012-01-03 20:01:15

+0

還有另一個問題的答案:http://stackoverflow.com/questions/3808427/dataset-to-xdocument-conversion-and-back/3809024#3809024。但這更像是使用序列化的繞道。 – 2012-01-03 20:03:49

+0

非常感謝。我也看了看。但是,如果這個類被棄用,應該有一個很好的解決方法。但我想它是字符串。 – Remy 2012-01-03 20:17:44