У меня есть документ, загруженный с помощью XElement.Parse (), и мне нужно применить к нему XSL-преобразование. Как бы я поступил так? Единственный способ, который я знаю, это использовать XPathDocument, и я не знаю, как конвертировать между ними, кроме XElement-> String-> StringReader-> Stream-> XPathDocument.
Должен быть лучший способ.
В связанном вопросе, как лучше всего применить XPath к XElement?
Почему бы не использовать :
xslt.Transform(xelement.CreateReader(), arglist, someTextWriter);
, где xelement - это XElement,xslt является XslCompiledTransform, arglist является XsltArgumentList и someTextWriter являетсяTextWriter?
xelement
XElement
xslt
XslCompiledTransform
arglist
XsltArgumentList
someTextWriter
TextWriter
Другими словами, используйте этот метод экземпляра : XElement.CreateReader()
XElement.CreateReader()
Или вы можете использовать:
xslt.Transform(xelement.CreateNavigator(null), someXmlWriter);
Подробнее о CreateNavigator() метод расширения здесь и здесь.
CreateNavigator()
Последняя ссылка MSDN содержит полный пример кода XSLT-преобразования.
Обновление : Этот дополнительный вопрос был задан:
Существуют различные способы оценки выражения XPath по XNode
XNode
Extensions.XPathEvaluate()
или
Extensions.XPathSelectElements()
Extensions.XPathSelectElement()