C# XslCompiledTransform, используя XmlDocument или XPathDocument, когда требуется редактирование?
Я собираюсь сделать пару предположений здесь:
- XPathDocument не редактируется.
- XmlDocument является редактируемым.
- XPathDocument более эффективен для XslCompiledTransform.
В таком случае (и, пожалуйста, исправьте меня, если я ошибаюсь), было бы лучше (более эффективно):
- Внесите изменения, используя XmlDocument, затем преобразуйте в XPathDocument перед преобразованием. Есть ли оптимизированный способ сделать это?
- Просто придерживайтесь 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
класс, если вы планируете использовать его несколько раз.