繁体   English   中英

如何使用C#代码触发XML(XSLT)转换? 如何将参数(“参数”)传递给XSLT?

[英]How to trigger XML (XSLT) transformation by using C# code ? How to pass parameters (“param”s) to XSLT?

这是我发布的问题:

嗨,我有一个XSLT代码,它需要从C#代码中获取参数(例如一两个)。(如果您想知道,为什么我需要这样做,然后让我解释一下,我必须从中解析输入XML某些外部应用程序,但是我需要使用可以在复杂的C#代码中定义的某些其他应用程序的值来编辑某些标签的数据,我暂时不必担心。)我需要声明一些字符串,并在触发转换的操作之后将它们传递给XSLT。

我试图搜索google,但没有成功。 如果您对此一无所知,请向我发送相应的链接或信息..

因为我不熟悉C#(这就是问题所在),所以更简单的编码会很有帮助。

另外,请指定我应该选择的“项目类型”。

提前致谢 ..

解决方案在这里: http : //msdn.microsoft.com/zh-cn/library/system.xml.xsl.xsltargumentlist.addparam.aspx简单且工作非常方便..

thanQ MandoMando和thanQ“ stackoverflow”

一般来说,不必创建XmlDocumentXDocument类的DOM对象来执行转换。

XslCompiledTransfrom xslt = new XsltCompiledTransform()
xslt.Load(transformPath);
XsltArgumentList args = new XsltArgumentList();
args.AddParam("name", "myNamespace", value)
using (XmlReader xr = XmlReader.Create(inputPath))
using (XmlWriter xw = XmlWriter.Create(outputPath))
{
   xslt.Transform(xr, args, xw);
}

请注意, XmlReaderXmlWriterCreate()方法具有大量的重载。 进行原型制作时,我XmlWriter.Create(Console.Out)使用XmlWriter.Create(Console.Out)

您看过这篇文章吗? 它谈论在C#中将参数传递给xslt。 我相信这是可能的。

快速又肮脏:

XmlDocument x = new XmlDocument();
x.Load("yourxmldoc.xml");
XslTransform t = new XslTransform();
XsltArgumentList xslArg = new XsltArgumentList();
xslArg.AddParam("parameterName", "", parameterValue);
StringWriter swEndDoc = new System.IO.StringWriter();
t.Load("yourdoc.xslt");
t.Transform(x, xslArg, swEndDoc, null);
String output = swEndDoc.ToString();

这非常简单-请注意,我正在使用XDocument和XslCompiledTransform:

XDocument xmlDocument = XDocument.Load(fromSource); // Or whatever means to get XML
XsltArgumentList xslArgs = new XsltArgumentList();

// For as many params as you need
xslArgs.AddParam("paramName", "", "paramValue");

// Create and load an XSLT transform - with params matching param names above
XslCompiledTransform t = new XslCompiledTransform();
t.Load(XSLTPath);

StringWriter outputDoc = new System.IO.StringWriter();
t.Transform(xmlDocument.CreateReader(), xslArgs, outputDoc);

String output = outputDoc.ToString();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM