2010-02-13 2 views

ответ

3

Согласно w3schools, «Firefox в настоящее время является единственным браузером с относительно хорошей поддержкой E4X».

Вы можете попробовать XPath. Хотя XPath не является кросс-браузером, для него есть несколько решений для Javascript, например, this jQuery plugin.

EDIT

Вы могли бы на самом деле использовать JQuery без плагина для этого:

$('<xml><some><code>code</code><tag>text</tag></xml></xml>').find('some > code').text() 
10

которые поддерживают браузеры E4X

Firefox и другие основаны на коде Mozilla.

Почему он не получил широкого распространения?

Потому что он предлагает небольшую практическую функциональность, которая уже не распространяется на существующие стандарты, такие как DOM.

ОК, его проще использовать, чем DOM, но поскольку цена за это вы не получаете доступа ко всем функциям XML, а полностью идиотский, бесполезный синтаксис XML-литерала/шаблона - это security disaster, что делает его таким авторам даже полностью статических защищенных htaccess документов приходится беспокоиться о работе над этой функцией.

Как простой способ доступа к результатам XMLHttpRequest, JSON полностью выиграл. Для полной обработки XML вам все равно требуется DOM. Для упрощения обработки документов существуют селектора, библиотеки XPath и JS, которые могут сделать это без необходимости вводить странный новый синтаксис языка.

Это не оставляет значительной части ниши для E4X. TBH Я бы хотел, чтобы он умер. (ETA: это сейчас довольно много сделано.)

+1

Я привык к e4x во флэш-памяти и задавался вопросом, почему он не поддерживается за пределами Firefox. Спасибо и +1. – Amarghosh

+0

E4X - действительно полезный синтаксис. То, как вы это описываете, вы утверждаете, что RegExp также ужасны. Они служат своей цели. Другое дело, что меня беспокоит, так как я разглагольствую, почему существует только один способ сделать что-то? Почему я не могу использовать XML вместо принудительного использования JSON? Я использую оба. Это то, что мне не нравится в веб-сообществе прямо сейчас. Кроме того, @bobince, что ссылка, которую вы отправили, больше не действительна. :( –

+0

Обновленная ссылка после архивирования в Google Code. И да, я считаю, что литеральный синтаксис JS RegExp также был ошибкой, хотя и без такого же негативного влияния, как у E4X. Проблема, которая у вас есть без регулярных выражений, в основном заключается в дополнительном слое обратной косой черты - вам нужно поставить их в строковый литерал. Другие языки решили это более универсальным и гибким способом с «сырым» строковым литералом. – bobince

3

Firefox dropped E4X support в версии 16:

E4X устарела. Он будет отключен по умолчанию для контента в Firefox 16, отключен по умолчанию для chrome в Firefox 17 и удален в Firefox 18. Вместо этого используйте DOMParser/DOMSerializer или неродной JXON-алгоритм.

Смежные вопросы