У меня есть следующий код VB.NET, который я использую для преобразования некоторого XML в новый XML, который затем продолжаю обрабатывать. Это одноразовый процесс, а не что-то, что делается много раз, поэтому, насколько я могу судить, никакой эффективности от кеширования не получается.XslCompiledTransform от XmlDocument до XmlDocument
Код работает, но я вижу проблемы с производительностью. Я ценю, что проблемы с производительностью могут быть связаны с 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
Можно ли указать какие-либо проблемы с моим кодом?
Редактировать: Это одноразовое преобразование, поэтому нет петель.
Это преобразование происходит только один раз (за XSLT) или несколько раз? Если этот код выполняется внутри цикла, попробуйте создать объект 'XslCompiledTransform' вне цикла и передав его вместо' XSLTLocation'. Чем меньше раз запускается метод 'Load()', тем лучше. – psmay