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

该代码有效,但是我看到性能问题。
我赞赏性能问题可能与XSLT有关。

我还发现开发人员的实例在XslCompiledTransform上存在性能问题,尤其是在64位环境中,这可能是一个错误(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进行梳理,但是目前使用过时的代码是解决我的问题的方法。

关于.net - 从XmlDocument到XmlDocument的XslCompiledTransform,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16568709/

10-13 08:27