Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用XSLT在C中转换节点,就像在JS中一样?_C#_Xml_Excel_Xslt - Fatal编程技术网

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

C# 如何使用XSLT在C中转换节点,就像在JS中一样?,c#,xml,excel,xslt,C#,Xml,Excel,Xslt,将XLSX XML格式转换为一行一行的XML,看起来非常整洁,似乎是手工制作的: 输入: <Row> <Cell> <Data ss:Type="String">123-44-5678</Data> </Cell> <Cell> <Data ss:Type="String">John</Data> </Cell> <Cell> <D

将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>

123-44-5678
约翰
雌鹿
...
输出:

<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>

123-44-5678
约翰
雌鹿
...
它是用JS编写的,但是如果您有源XML和XSLT样式表,是否可以用C#?

您可以使用以下内容:

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
xslcomiledtransform transform=new xslcomiledtransform();
//可选参数列表-来自您链接的文章
XsltArgumentList参数=新的XsltArgumentList();
parameters.AddParam(“nSkipRows”,“1”);
parameters.AddParam(“nWorksheet”、“1”);//还有一个(它们将把值复制到样式表中顶级对应的``元素,如果它们存在的话)
Load(xsl文件名);
StringWriter s=新的StringWriter();
transform.transform(xmlFileName,参数,s);//这一行进行转换
Console.WriteLine(“结果:+s.ToString());//这里只是打印结果

好吧,如果它只是直接的XSL处理,我看不出为什么不能。