У меня есть проект, в котором мои входные файлы были XML. Теперь меня просят начать обработку HTML со встроенным CSS, и я хотел бы сделать это максимально аккуратно и с минимальным количеством изменений кода, насколько это возможно. Я использовал XML :: LibXML для разбора файлов XML, но теперь, когда мы переходим на HTML с помощью CSS, я думаю, что мне нужно перейти к чему-то другому. Тем не менее, прежде чем я погрузлюсь в глупые решения, о которых я, скорее всего, пожалею, я хотел бы спросить здесь: что вы, ребята, используете для такого рода задач?
Структуры старого XML и новых входных файлов HTML очень похожи, и оба хранят одну и ту же информацию. HTML использует div вместо текстовых узлов XML и хранит информацию о его стиле в тегах и атрибутах стиля вместо отдельных атрибутов xml.
Пример старого XML:
<text font="TimesNewRoman,BoldItalic" size="11.04" x="59" y="405" w="52"
h="12" bold="yes" italic="yes" cs="4.6" o_bbox="59,405;52,12"
o_size="11.04" o_cs="4.6">
Some text
</text>
Пример нового HTML:
<div o="9ka" style="position:absolute;top:145;left:89;x-pdf-top:744;x-pdf-left:60;x-pdf-bottom:732;x-pdf-right:536;">
<span class="ft19" >
Some text
</span></nobr>
</div>
где "ft19" относится к элементу стиля css в верхней части страницы формата:
.ft19{ vertical-align:top;font-size:14px;x-pdf-font-size:14px;
font-family:Times;color:#000000;x-pdf-color:#000000;font-style:italic;
x-pdf-letter-spacing:0.83px;}
По сути, все, что мне нужно, - это анализатор, который может считывать стилистические элементы каждого узла как атрибуты, поэтому я мог бы сделать что-то вроде:
my @texts_arr = $page_node->findnodes('text');
my $test_node = $texts_arr[1];
print "node\'s bold value is: " . $text_node->getAttribute('bold');
как я могу сделать с XML. Есть ли что-то подобное для разбора HTML? Я действительно хотел бы убедиться, что я начал это правильно, вместо того, чтобы найти что-то, что делает то, что я хочу, на CPAN, и понял, что через два месяца появился другой модуль, который был намного лучше для того, что я пытаюсь сделать.
Идеи