shoorick: (Default)
[personal profile] shoorick
Вчера сгоряча чуть было не написал программулину по рисованию дерева со структурой XML-файла. Даже, взяв напильник, слегка обточил какой-то старый скрипт разбора XML так, что он стал выдавать вместо текста вида
root
:  + first
:  :  + one
:  + second
+ three
исходный текст для GraphViz, из которого уже можно получать картинки.

Сегодня, погуглив на свежую голову, нашёл, что на CPAN, конечно же, есть нужный модуль. Теперь нарисовать дерево можно совсем просто:
#!/usr/bin/perl -w

use GraphViz::XML;
use File::Slurp;

my $data = read_file shift @ARGV;
my $graph = GraphViz::XML->new($data);
print $graph->as_png;
Получается такая картинка:
Структура XML-файла
Если нужен другой формат готовой картинки, то помимо PNG, модулем поддерживаются и другие форматы, как растровые (GIF, JPEG), так и векторные (PostScript, SVG) — для этого предназначены методы с вполне предсказуемыми именами as_gif, as_jpeg, as_ps, as_svg и т. п. А если не устраивает внешний вид графа, можно получить исходный dot-файл — для этого существуют методы as_canon и as_text: второй, в отличие от первого, выдаёт ещё и координаты вершин.

Можно ещё попробовать указать нужные свойства графа прямо в скрипте. Но это уже совсем другая история.

Profile

shoorick: (Default)
shoorick

December 2016

S M T W T F S
    1 23
45678910
11121314151617
18 19 2021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 9th, 2025 05:08 am
Powered by Dreamwidth Studios