如何使用XSLT在c#中像在JS中那样转换节点

本文关键字:转换 节点 JS 何使用 XSLT | 更新日期: 2023-09-27 18:06:39

这个参数化的XSLT将XLSX XML格式转换成一行一行的XML,看起来非常整洁,就像手工制作的一样:

输入:

<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#中可能吗?

如何使用XSLT在c#中像在JS中那样转换节点

如果您有 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
相关文章: