2015-05-05 5 views
1

Существует множество способов анализа и обработки файлов HTML4 с использованием многих технологий. Но я не могу найти подходящий, который сохранит этот файл DOM снова.Как загрузить и проанализировать HTML без изменения его содержимого

Я хочу, чтобы иметь возможность загружать HTML-файл в DOM, изменять одну мелочь (например, значение атрибута), сохранять DOM в файл снова и при изменении исходного файла и созданного файла, я хочу, чтобы они быть полностью идентичными, за исключением небольших изменений.

Эта задача совершенно не проблема при работе с XML и подходящими библиотеками XML, но когда дело доходит до HTML, возникает несколько проблем: пробелы, такие как углубления или линейные перерывы, теряются или вставлены, самозакрывающиеся начальные теги (такие как <link...>) появляются как <link.../> и/или содержимое секций CDATA (например, между <script> и </script>) обернуто в <![CDATA[]]>. Эти вещи имеют решающее значение в моем случае.

В каком режиме можно перемещаться, перемещаться, манипулировать и сохранять HTML без каких-либо недостатков, описанных выше, что наиболее важно, если бы не были изменены текстовые узлы?

+0

Многие сайты, которые в настоящее время разрабатываются (или разработаны за последние несколько лет), используют HTML5. Вас беспокоит только HTML5 или вы хотите обрабатывать HTML4, XHTML и/или микроформаты? – devstruck

+1

Если «небольшое изменение» действительно является небольшим изменением, почему бы не прочитать файл в строковой переменной, используйте предоставленные языком функции замены строк и/или регулярные выражения. – tiblu

+2

@tiblu В зависимости от требований здесь, что-то, что тривиально с парсером DOM (найти атрибут X на третьем элементе Y, содержащимся в Z), может быть абсолютным кошмаром со стандартными функциями string/regex. –

ответ

0

Я иду с HTML Agility Pack. Загрузка и сохранение не обрабатывают ничего, кроме недопустимых частей.

0

comparison

Если вы хотите получить действительно серьезно уйти из графического интерфейса и идти без головы, SO пример с Phantom

+0

Я покажу Фантомам. Мне нравится идея использования реализации DOM веб-браузера. Я надеюсь, что он предоставляет достаточно возможностей для сохранения пробелов и т. Д. – Andre

+0

Оказывается, он не предоставляет возможности для сохранения пробелов и т. Д. – Andre

+0

Позор, я посмотрю, смогу ли я найти больше, ps постоянно публикует обновления, поскольку мне, возможно, придется делать аналогичные – saj

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