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

Я собираюсь сделать пару предположений здесь:

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

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

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

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

Заранее спасибо за помощь.

2 ответа

Решение

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


Если вы должны использовать xslt, то XDocument на самом деле не вариант; как только вы загрузили его в XmlDocument Вы могли бы также остаться с XmlDocument - Я бы не рекомендовал разбирать его во втором DOM.

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

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

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

Другие вопросы по тегам