Archive for the ‘XML::DOM’ Category

Текст и аттрибуты

Friday, October 5th, 2007

Еще одна неприятность, это не возможность добавлять сразу и новый тег и текст внутри него как в DOMDocument
Вот для примера реализация на php

$tempA=$dom->createElement('a', 'mymans.org');

а вот perl

my $a = $doc->createElement('a');
my $text = $doc->createTextNode('mymans.org');
$a->setAttribute('href', 'http://mymans.org');
$a->appendChild($text);

хорошо хоть добавление аттрибутов работает по обычному

$a->setAttribute('href', 'http://mymans.org');

use XML::DOM

Monday, October 1st, 2007

Впереди грядет Perl6 в котором многое уделено работой с XSLT поэтому пред этим надо по быстрому разобраться с XML на перле. Есть несколько молулей для работы с XML, но наиболее близким по синтаксису к DOMDocument в PHP мне показался модуль XML::DOM.

Для начала, пришлось устанавливать его из портов под FreeBSD. Под рутом итрпавился в путь

cd /usr/ports/textproc/p5-XML-DOM

и там запустил make install

После установки для теста создал простейший документ

#!/usr/bin/perl

use XML::DOM;
my $doc = XML::DOM::Document->new;

my $xml_pi = $doc->createXMLDecl ('1.0');

my $root = $doc->createElement('html');
my $body = $doc->createElement('body');
$root->appendChild($body); 

print $xml_pi->toString;
print $root->toString;

Сохранив файл и дав ему права на запуск получаю вот такой вывод

<?xml version="1.0"?><html><body/></html>

Из не совсем привычных вещей это два принта для вывода одного файла. Но, как говориться, кудаж без этого в perl, было бы странно, будь оно не так. Не стоит переживать, в этом случае print служит вызовом метода класса,
print $xml_pi->toString; - вызывает метод который добавляет версию к документу
print $root->toString; - выводит сам документ