如何使用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