如何使用XSLT在C#中像在JS中一样转换节点?

这个参数化的XSLT将XLSX XML格式转换为逐行的XML格式,看起来非常整洁,看起来是手工制作的:

input:

<Row> <Cell> <Data ss:Type="String">123-44-5678</Data> </Cell> <Cell> <Data ss:Type="String">John</Data> </Cell> <Cell> <Data ss:Type="String">Doe</Data> </Cell> ... </Row> 

输出:

 <row number="1"> <SSN>123-44-5678</SSN> <First_Name>John</First_Name> <Last_Name>Doe</Last_Name> ... </row> 

它是用JS编写的,但在C#中可能吗?

如果您有源 XML和XSLT 样式表

 string xmlFileName = "Book.xml"; string xslFileName = "Excel2NamedXML.xsl"; 

你可以使用这样的东西:

 XslCompiledTransform transform = new XslCompiledTransform (); // Optional parameter list - from the article you linked XsltArgumentList parameters = new XsltArgumentList (); parameters.AddParam ("nSkipRows", "", "1"); parameters.AddParam ("nWorksheet", "", "1"); // and so one (these will copy values to top-level correspondent `<xsl:param>` elements in the stylesheet, if they exist) transform.Load (xslFileName); StringWriter s = new StringWriter (); transform.Transform (xmlFileName, parameters, s); // this line does the transformation Console.WriteLine ("Result: " + s.ToString ()); // here just printing out the result