【问题标题】:How do I use XSLT in .NET?如何在 .NET 中使用 XSLT?
【发布时间】:2011-08-01 10:53:58
【问题描述】:

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

我找到了一些关于如何使用开源工具进行操作的资料。但是.NET 框架呢?只是几个其他的快速问题...

  1. 谁能给我一个关于 XSLT 操作顺序的快速而肮脏的解释?我仍然对发生的事情感到有些困惑?

  2. 是否有任何明确的 .NET 工具可用于处理 XSLT?我知道在使用 XSLT、XSD 和 XML 文件时,您会在 Visual Studio .NET 的主菜单上看到一个小的 XML 下拉列表。我想现在还可以,但如果我有其他选择,我会很高兴。

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

【问题讨论】:

  • 当有人给出您满意的答案作为解决方案时,单击答案旁边的勾号将其标记为已接受。如果以后有人提出了更好的答案,您可以随时改变主意。

标签: .net xml asp.net-mvc-2 xslt transformation


【解决方案1】:

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();
}

在哪里可以找到有关如何执行此操作的优秀教程 (...)?

如果您想学习 XSLT 语言本身,可以查看之前的问题:"How to get started with xslt-transformations?"

【讨论】:

  • 使用transform.Load("foo.xslt"); 可以简单地加载样式表,使用 File.OpenRead 和 XmlReader 不会有任何收获。
猜你喜欢
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 2014-11-08
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多