Как отформатировать XML, созданный из XML :: LibXML в Perl - PullRequest
1 голос
/ 17 октября 2019

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

НижеСнимок того, как я создаю XML из моего сценария Perl:

my $xml = XML::LibXML::Document->new('1.0', 'UTF-8');
$xml->createElement('A');
$elem->setAttribute('B',data)

Есть ли способ отформатировать XML с помощью XML :: LibXML, потому что мне нужно придерживаться только этого модуля.

1 Ответ

2 голосов
/ 17 октября 2019

Метод XML::LibXML::Document::serialize записывает XML-документ в виде текста. Его параметр допускает ограниченный контроль над форматом вывода.

XML::LibXML является шпоном системной библиотеки libxml2. Эта библиотека поставляется с жестко закодированным отступом в 2 пробела, поэтому, если вы не создадите свой собственный симпатичный принтер, ваши параметры будут ограничены.

Однако, существует ряд автономных утилит, которые переформатируют синтаксически допустимый xml и позволяютболее детальный контроль и который может быть запущен как постпроцессор из perl для файла с сериализованным xml. Я был удовлетворен xmlstarlet и xmllint.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...