Просачивание E4X

Это - просто простой вопрос. Я в настоящее время использую Носорога Mozilla для разработки небольшого веб-приложения. Как один шаг, я должен получить веб-страницу и отфильтровать весь, его - узлы. Для того, чтобы сделать это, я использую E4X. Я думал, что мог сделать это как этот:

var pnodes = doc..*(p);

Но это производит ошибку. Как это сделано правильно?

(BTW: это - просто шаг для увеличения производительности. Код уже преуспевает, это просто немного медленно.)

1
задан fb55 25 May 2010 в 17:26
поделиться

1 ответ

Вы должны иметь возможность использовать следующее:

doc..*.(name() == "p")

Обратите внимание, что это ошибка в реализациях Rhino и SpiderMonkey, когда выражение фильтра name () == "p" неправильно привязано к текущему узлу, поэтому ни один из определены методы XML или XMLList .


Еще одно работоспособное решение - поиск всех узлов p в документе и накопление родительских узлов каждого в массиве.

var elements = [];

for each (var p in doc..p) {
    var parent = p.parent();
    if(elements.indexOf(parent) === -1)
        elements.push(parent);
}
2
ответ дан 3 September 2019 в 00:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: