XslCompiledTransform from XmlDocument to XmlDocument



我有以下VB。NET代码,我用它将一些XML转换成新的XML,然后继续处理。这是一个一次性的过程,而不是多次执行的过程,因此,据我所知,从缓存中无法获得效率。

代码工作,但我看到性能问题。我意识到性能问题可能与XSLT有关。

我还发现开发人员在使用XslCompiledTransform时遇到性能问题的实例,特别是在64位环境下,这可能是一个bug (http://connect.microsoft.com/VisualStudio/feedback/details/508748)

可能的XSLT性能问题和XslCompiledTransform的问题都不在我的控制之下,但是我的代码可能存在问题。我只是想确保我做变换的方法是我需要的最有效的方法。

Public Function TransformUsingXPathNavigator(ByVal InputXML As XmlDocument, ByVal XSLTLocation As String) As XmlDocument
    Dim theNavigator As XPathNavigator
    theNavigator = InputXML.CreateNavigator()
    Dim theTransform As XslCompiledTransform = New XslCompiledTransform()
    theTransform.Load(XSLTLocation)
    Dim outputXML As New XmlDocument()
    Using writer As XmlWriter = outputXML.CreateNavigator().AppendChild()
        theTransform.Transform(theNavigator, writer)
    End Using
    Return outputXML
End Function

有谁能指出我代码中的问题吗?

编辑:这是一次转换,所以没有循环。

我们无法使用XslCompiledTransform来提高代码的效率。

我们能够在XSLT中识别多次运行的循环,当删除代码时,所用时间从60多秒减少到不到1秒。

但是,XSLT超出了我的控制范围,因此我需要找到一个替代解决方案。它不是理想的,但是我不得不回到过时的XslTransform。

使用XslTransform代码运行不到1秒,这是我需要的。

接下来我们使用的XSLT将需要分类,但是现在使用过时的代码是解决我的问题的方法。

最新更新