使用 XLST 转换从 Web 请求返回的 XML

本文关键字:返回 XML 请求 Web XLST 转换 使用 | 更新日期: 2023-09-27 17:56:13

我看到几个与此接近的问题,但没有一个完全涵盖它:

  • 如何在 C# 中应用 XSLT 样式表
  • 使用 Web 表单中的 XML 数据对 XML 进行 XSLT 转换
  • 如何将从请求生成的 xml 结构转换为 Web 服务

我可以从这些拼凑出一些东西,但我担心我通过太多步骤来提高效率。

我目前拥有的是,从HTTP Web请求中读取XML:

        WebRequest request = WebRequest.Create(url);
        WebResponse response = request.GetResponse();
        Stream stream = response.GetResponseStream();
        StreamReader streamReader = new StreamReader(stream);
        string xml = streamReader.ReadToEnd();

这是在需要应用 XLST 转换之前。现在我有一个(可能为空的)XslCompiledTransform对象。

所以我想添加一个块,例如:

if(transform != null)
{
  xml = transform.Transform(xml);
}

显然,这不可能像书面的那样。我看到可以创建字符串阅读器和 XmlReader,但是将我的 xml 作为字符串获取,然后将其推送回另一个对象是否效率低下?我是否可以直接使用 streamstreamReader对象来支持相同的基本流,但可以使用可选转换?

使用 XLST 转换从 Web 请求返回的 XML

就个人而言,我会使用 XmlDocument.Load() 函数从 URL 加载 XML,在这种情况下不使用WebRequest

然后,您可以将XmlDocument直接传递给XSLCompiledTransform.Transform()

XmlDocument doc = new XmlDocument();
doc.Load(url);
if (transform != null)
{
 XmlDocument tempDoc = new XmlDocument();
 using (XmlWriter writer = tempDoc.CreateNavigator().AppendChild())
 {
  transform.Transform(doc, writer);
 }
 doc = tempDoc;
} //Use your XmlDocument for your transformed output