XML::LibXML. Создание xml-документа

Данный пример perl-кода, основанный на библиотеке XML::LibXML, генерирует xml-документ.

use XML::LibXML;
 
my $doc    = XML::LibXML::Document->new('1.0', 'utf-8');
my $create = $doc->createElement('object');
   $create->setAttribute('attribute', 'value');
   $doc->setDocumentElement($create);

my $document = $doc->createElement('tag');
   $create->appendChild($document);

my $name_doc = $doc->createElement('name');
   $name_doc->appendText('name');
   $document->appendChild($name_doc);

open my $out, '>', 'file.xml';
print {$out} $doc->toString(2);

Perl: парсинг gpx-трека

 Структура gpx-трека выглядит примерно таким образом. Внутри тега <trkpt> могут быть также time, ele.

<?xml version="1.0" encoding="utf-8"?>
<gpx>
    <trk>
        <name>Track</name>
        <trkseg>
            <trkpt lat="87.89289951324463" lon="41.97881025520548"></trkpt>
            <trkpt lat="87.7565735578537" lon="41.85182988575514"></trkpt>
        </trkseg>
    </trk>
</gpx>

CDATA с помощью XML::LibXML

CDATA (character data — символьные данные) используется в языках разметки XML для отображения символьных данных. Раздел CDATA начинается последовательностью символов "<![CDATA[" и заканчивается "]]>".

При создании xml-документов с CDATA на Perl я использую библиотеку XML::LibXML::CDATASection.

Рассмотрим пример: 

use XML::LibXML;

my $cdata = new XML::LibXML::CDATASection('symbols <>');
print $cdata->toString, "\n";
# результат: <![CDATA[symbols <>]]>

my $text = new XML::LibXML::Text('symbols <>');
print $text->toString, "\n";
# результат symbols &lt;&gt;