C # XslCompiledTransform с использованием XmlDocument или XPathDocument, когда требуется редактирование?

StackOverflow https://stackoverflow.com/questions/1902145

Вопрос

Здесь я исхожу из пары предположений:

  1. XPathDocument недоступен для редактирования.
  2. XmlDocument доступен для редактирования.
  3. XPathDocument более эффективен для XslCompiledTransform.

В таком случае (и, пожалуйста, поправьте меня, если я ошибаюсь), было бы лучше (эффективнее):

  1. Внесите изменения, используя XmlDocument, затем преобразуйте в XPathDocument перед преобразованием.Есть ли оптимизированный способ сделать это?
  2. Просто придерживайтесь XmlDocument с помощью преобразования.

Немного предыстории: я получаю сложный xml-файл из веб-сервиса, затем использую xpath, чтобы найти некоторые элементы, которые необходимо изменить, затем использую xslt для создания html.

Заранее благодарю за помощь.

Это было полезно?

Решение

Это зависит от того, какой объем изменений требуется, насколько велики данные и знакомы ли вы с xslt.Если "нет" до последнего, просто используйте XDocument etc (в прошлый раз, когда я запускал профиль, XDocument было быстрее, чем XmlDocument для моих данных - проведите свои собственные тесты).Использование XDocument.Load / XDocument.Parse, найдите свой узел, отредактируйте его и сохраните.


Если вы должен затем используйте xslt XDocument на самом деле это не вариант;как только вы загрузите его в XmlDocument с таким же успехом ты мог бы остаться с XmlDocument - Я бы не рекомендовал разбирать его на второй ДОМ.

Конечно, это заставляет нас задуматься:зачем изменять xml снаружи из xslt, если вы собираетесь использовать xslt;может быть, просто перевести во время xslt?

Чтобы получить 100% точный ответ для ваших данных конечно, вам нужно будет составить его профиль.Но такие вещи, как надлежащее использование группирующих конструкций xslt, часто приводят к многое большая разница, чем XmlDocument против XPathDocument.

Другие советы

Просто используйте XmlDocument класс для преобразования.Это должен быть объемный документ, чтобы действительно увидеть прирост производительности.Возможно, вы захотите скомпилировать статический экземпляр XslCompiledTransform класс, если вы планируете использовать его несколько раз.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top