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

时间:2016-07-11 10:42:31

标签: c# xml xslt webrequest

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

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

我目前所拥有的是从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转换之前。现在我有一个(可能为null)XslCompiledTransform对象。

所以我想添加一个像:

这样的块
if(transform != null)
{
  xml = transform.Transform(xml);
}

显然,这是不可能的。我看到可以创建StringReaders和XmlReaders但是将xml作为字符串然后将其推回到另一个对象是否效率低下?我可以直接使用我的streamstreamReader对象来支持相同的基本流程,但是可选择转换吗?

1 个答案:

答案 0 :(得分:0)

我个人使用XmlDocument.Load()函数从网址加载XML,在这种情况下不使用WebRequest

您可以将XmlDocument Straight传递给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