Недавно на спане появился модуль HTML::DOM, который одновременно — и парсер и билдер. Пара первых простейших экспериментов с этим модулем.
Создание HTML
use v5.10;
use strict;
use HTML::DOM;
my $dom = new HTML::DOM;
$dom->write('<html>');
say $dom->innerHTML;
Здесь модуль создаст HTML с полным набором нужных тегов:
<html><head></head><body></body></html>
Более того, правильно обрабатываются и неправильные вызовы, например такой код
$dom->write('<html>');
$dom->write('<title>My Title</title>');
аккуратно размещает тег <title> внутри <head>:
<html><head><title>My Title</title></head><body></body></html>
Чтение HTML
Базовая операция чтения файла проста:
use v5.10;
use strict;
use HTML::DOM;
my $dom = new HTML::DOM;
$dom->parse_file('test.html');
say $dom->innerHTML;
Опять же, происходит внятное преобразование до валидного HTML-кода. Если файл test.html содержит одну строку <title>My Title</title>, то на выходе получается следующее:
<html><head><title>My Title</title>
</head><body></body></html>
Этими примитивными действиями модуль не ограничивается. В его распоряжении набор методов, напоминающих методы, доступные в XML::LibXML и при обработке DOM с помощью JavaScript.
Комментировать