Всякий раз, когда вы имеете дело с XML, используйте XPath (или XSLT, XQuery, SAX, DOM или любой другой XML-ориентированный метод для просмотра ваших данных). Не никогда использовать регулярные выражения для этой задачи .
Почему?Обработка XML является сложной и имеет дело со всеми ее странностями, внешними / разобранными / неразобранными сущностями, DTD, инструкциями обработки, обработкой пробелов, свертыванием, нормализацией Юникода, разделами CDATA и т. Д. очень трудно создать надежное регулярное выражение-способ получения ваших данных.Просто учтите, что индустрии потребовались годы, чтобы научиться лучше разбирать XML, должно быть достаточно оснований , чтобы не пытаться сделать это самостоятельно .
Отвечая на ваш вопрос: когда это произойдетдля скорости (которая должна не быть вашей главной задачей здесь), это сильно зависит от реализации компилятора / процессора XPath или Regex.Иногда XPath будет быстрее (т. Е. При использовании ключей, если возможно, или скомпилированного XSLT), в других случаях регулярные выражения будут быстрее (если вы можете использовать предварительно скомпилированное регулярное выражение, и ваш запрос прост).Но регулярные выражения с HTML / XML никогда не бывают простыми просто из-за проблемы с вложенными скобками (тегами), которая не может быть надежно решена только с помощью регулярных выражений.
Если ввод огромен, регулярное выражение будет стремиться быть быстрее, если реализация XPath не может выполнять потоковую обработку (что, я считаю, не метод внутри Firefox).
Вы писали:
«который более эффективен» *
- тот, который быстрее всего обеспечивает надежную и стабильную реализацию, которая сравнительно быстра.Используйте XPath.Это то, что используется в Firefox и других браузерах, если вам нужен код для запуска из браузера.