3

我有以下 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

有人能指出我的代码有任何问题吗?

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

4

1 回答 1

0

我们从未能够使用 XslCompiledTransform 提高代码的效率。

我们能够识别 XSLT 中多次运行的循环,并且在删除代码后,代码从耗时 60 多秒减少到不到 1 秒。

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

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

展望未来,我们使用的 XSLT 将需要整理出来,但现在使用过时的代码是我的问题的解决方案。

于 2013-12-10T15:32:12.683 回答