E4X фильтр по текстовому содержимому? - PullRequest
0 голосов
/ 28 мая 2009

Я пытаюсь отфильтровать XML в JavaScript, используя E4X, и у меня есть особые потребности. Учитывая следующее:

    var xml = <body>
      <div>
        <p>This is some text that I have.</p>
      </div>
    </div>;

Я хочу найти в документе абзацы, начинающиеся с «Это какой-то текст».

В настоящее время я могу получить следующее:

xml..div(p.text().toString().indexOf("This is some text") === 0)

Однако «настоящий» XML намного сложнее (подумайте: обычная веб-страница). Нет никаких гарантий, что будет div, непосредственно ставящий параграф в вопросы. В одном и том же родительском элементе могут быть другие абзацы до / после рассматриваемого абзаца (-ов).

Есть идеи?

1 Ответ

3 голосов
/ 29 июня 2009

Используйте оператор двойной точки для поиска всех

узлов любого уровня выравнивания, а затем отфильтруйте узлы, чтобы включить только те, которые начинаются с желаемой строки. Вы были близки, вам просто нужно избавиться от

, поскольку, как вы заявили,
может отсутствовать .:
xml..p.( text().toString().indexOf("This is some text") == 0 );
...