【问题标题】:Transform XML returned from a web request using XLST使用 XSLT 转换从 Web 请求返回的 XML
【发布时间】:2016-07-11 10:42:30
【问题描述】:

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

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

我目前拥有的是这个,从 HTTP 网络请求中读取 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 对象来支持相同的基本流程,但可以选择转换吗?

【问题讨论】:

    标签: c# xml xslt webrequest


    【解决方案1】:

    我个人会使用 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
    

    【讨论】:

    • 我的问题是可能没有转换,我不想要两个完全不同的代码路径。也许我只是对这些类不够熟悉,看不出它们是如何组合在一起的……你能提供示例(伪代码很好)吗?
    猜你喜欢
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多