Применение XSLT-преобразования к DataSet (ADO.NET) - PullRequest
1 голос
/ 03 января 2012

На сайте Microsoft есть хороший пример (Even vor .Net 4)

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 устарела, но, похоже, никто не может дать хороший ответ о том, как заменить его в этой ситуации?

1 Ответ

2 голосов
/ 03 января 2012

Вы можете использовать следующий код.

Используйте 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);
...