使用 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 作为字符串获取,然后将其推送回另一个对象是否效率低下?我是否可以直接使用 stream
或streamReader
对象来支持相同的基本流,但可以使用可选转换?
就个人而言,我会使用 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