我如何在.NET中使用XSLT?

Sof*_*ant 5 .net xml xslt transformation asp.net-mvc-2

我将基于可扩展样式语言转换将XML文档转换为另一个XML文档.我在哪里可以找到关于如何在.NET中执行此操作的好教程?

我发现了一些关于如何使用开源工具进行操作的内容.但是.NET框架呢?只是其他一些快速问题......

  1. 有人可以给我一个关于XSLT操作顺序的快速而肮脏的解释吗?我对发生的事情仍然有点困惑?

  2. 是否有用于使用XSLT的显式.NET工具?我知道在使用XSLT,XSD和XML文件时,您会在Visual Studio .NET的主菜单上获得一个XML下拉列表.我想现在还可以,但是知道我是否有其他选择会很高兴.

  3. 我不会真正转换文件...好吧,我猜可扩展样式表将是一个文件,但我想导入一个XML字符串,将其转换为另一个XML字符串,然后通过它转换为一个视图MVC设计模式.我怎样才能做到这一点?

R. *_*des 9

1)有人可以给我一个关于XSLT操作顺序的快速而肮脏的解释吗?我对发生的事情仍然有点困惑?

从使用的角度来看,只有一个操作:你获取一些输入,XSLT引擎将它转换为输出.

2)有没有明确的.Net工具可以使用XSLT?我知道在使用XSLT,XSD和XML文件时,您可以在Visual Studio .net的主菜单上获得一个小的XML下拉列表.我想现在还可以,但是知道我是否有其他选择会很高兴.

使用它XslCompiledTransform可以应用您的XSL转换.

3)我不会真正转换文件......好吧,我猜可扩展样式表将是一个文件,但我想导入一个xml字符串,将其转换为另一个xml字符串,然后通过它转换为在MVC设计模式中查看.每个人都试着像以前一样疯狂吗?如果是的话,有什么建议?

XslCompiledTransform我上面提到的类可以直接在流工作,或者XmlReaderXmlWriter对象,所以你可以做整个事情的记忆,没有任何临时文件.

这是一个基本的例子:

// Load the XSL transform from a file
var transform = new XslCompiledTransform();
transform.Load("foo.xslt");

// This is your input string
string input = /* blah */;

// Make an XML reader out of the string
XmlReader inputXmlReader;
using(var inputReader = new StringReader(input))
{
    inputXmlReader = XmlReader.Create(inputReader);
}

using(writer = new StringWriter()) // prepare a string writer for the output
{
    // if you need to pass arguments to the XSLT...
    var args = new XsltArgumentList();
    args.AddParam("key", "urn:xml-namespace-of-key", "value");

    // Apply the transformation to the reader and write it in our string writer
    transform.Transform(inputXmlReader, args, writer);

    // Retrieve the output string from the string writer
    return writer.GetStringBuilder().ToString();
}
Run Code Online (Sandbox Code Playgroud)

我在哪里可以找到关于如何做到这一点的好教程(...)?

如果您想学习XSLT语言本身,可以查看以前的问题:"如何开始使用xslt-transformations?" .

  • 加载样式表可以简单地通过`transform.Load(“ foo.xslt”);`完成,使用File.OpenRead和XmlReader不会获得任何好处。 (2认同)