вторник, 1 февраля 2011 г.

Как удалить родительский узел HTML документа при этом оставив его дочерние элементы?

Немного теории:
Программное создание, удаление и модификация HTML-элементов
DOM модель представляет HTML-документ в виде дерева, в узлах которого находятся HTML-элементы. Каждый узел дерева (кроме корневого) имеет единственный родительский узел (parentNode) и может иметь дочерние (childNodes) и "братские" (siblings) узлы, т.е. узлы, имеющие общего родителя. Модификация документа DOM-методами заключается в создании нового элемента и размещения его в определенном узле, удалении или изменении узла.

Вот какая стояла задача:

Есть HTML документ нужно найти все ссылки с атрибутом title="оригинальный размер" и удалить их из документа но при этом элементы для которых родительским узлом являлась удаляемая ссылка остались. т.е. из такого кода:

<div class="article-image">
    <a href="http://www.blogger.com/2/061f4b878270523.jpg" title="оригинальный размер">
          <img alt="картинка" src="http://www.blogger.com/2/img1.jpg" />
    </a>
</div>
получить вот такой:

<div class="article-image">
    <img alt="картинка" src="http://www.blogger.com/2/img1.jpg" />
</div>
Решение при помощи VBscript :


For Each LinkImg In objIE.document.links           ' Запускаем перебор всех ссылок документа
   If LinkImg.title = "оригинальный размер" Then  ' Определяем ссылку на наличие атрибута title равного  тексту "оригинальный размер"

        Set Img = LinkImg.firstChild              ' Берем дочерний элемент ссылки
        LinkImg.parentNode.appendChild(Img)       ' Делаем его дочерним элементом родительского узла ссылки
        LinkImg.removeNode(true)                  ' Удаляем узел ссылку

   End If
Next