0x0008 XML pretty-print with Perl. Форматирование XML с помощью Perl

Сегодня уже не новость, что использование формата XML получило широчайшее распространение, причём его проникновение в новейшие приложения и OS приобрело просто огромные масштабы. И если, кто-то заявляет о том, что он является программистом на Perl, но сам на высоком уровне не разбирается в XML, то он откровенно лжёт!

Одной из актуальных задач программировании на Perl является преобразование документов в формате XML, в понятные виды структур на Perl, а также обратная операция.

Интересно и то, что многие специалисты по XML, с которыми мне приходилось общаться, часто приятно удивляются тому, каким полезным оказывается неоправданно игнорируемый многими язык Perl, который может проводить доскональный анализ XML-документов.

Что же касается собственной работы, то у меня недавно появилась необходимость при работе с чужими XML-документами отформатировать их отступами для удобочитаемости.

Скрипт использует модуль XML::Twig, дополнительные настройки можно посмотреть в perldoc или на CPAN


#!/usr/bin/perl

use strict;
use warnings;

use XML::Twig;

open OUT, ">out.xml";
my $twig = new XML::Twig(
    keep_encoding => 1,
    pretty_print => 'indented'
);
$twig->parse(join '', (<DATA>));
$twig->set_indent("\t");

print OUT $twig->sprint;
close OUT;

__DATA__
<?xml version="1.0" encoding="UTF-8"?>
<articles>
  <item parent-id="0" id="1">
	<title>Статья один</title><content>Дополнительные опции XML::Twig смотрите в perldoc или на CPAN
</content></item>
</articles>