Загрузка элемента hpricot с помощью фрагмента html

Есть ли способ загрузить кусок HTML в объект Hpricot::Doc?

Я пытаюсь проанализировать различные фрагменты HTML в пользовательских тегах со страницы.

так что если у меня есть:

<foo>
  <b>here is some stuff</b>
  <table>
    <tr>
      <td>one</td>
      <td>two</td>
    </tr>
    <tr>
      <td>three</td>
      <td><four</td>
    </tr>
  </table>
</foo>

Мне бы хотелось получить foo и его содержимое в объекте Hpricot::Doc, потому что мне нужно будет выполнить некоторую дополнительную обработку и, в конце концов, поменять его местами, чтобы заменить foo и все его дочерние элементы в документе.

Я знаю, что могу перебирать детей из foo, но я надеялся, что есть способ собрать все это одним куском, чтобы сохранить вещи в чистоте. Также может иметь или не иметь атрибуты. Будет много элементов, каждый из которых содержит кусок HTML, но ни один элемент foo не будет содержать другой элемент foo.

Это вообще возможно? Наконец, я начал с Hpricot, но я открыт для Nokogiri, если это будет иметь значение.

1 ответ

Мне не ясно, с чем у вас проблемы.

Вы можете передать hpricot свой html любым удобным вам способом.

Из файла

doc = Hpricot("<p>A simple <b>test</b> string.</p><foo>foo content</foo>")

Вы можете искать foo и менять его

doc.search("//foo").first.swap "<blink>not foo</blink>"
Другие вопросы по тегам