Как мне установить атрибут узла с Mojo :: DOM? - PullRequest
3 голосов
/ 19 октября 2019

Я пытаюсь установить атрибут с помощью Mojo :: DOM следующим образом:

use Mojo::DOM;

my $a = Mojo::DOM->new('<a></a>');
my $a = $a->attr({ 'href' => 'https://foo/bar' });
print $a;

Я ожидаю, что он напечатает

<a href="https://foo/bar"></a>

, но я получу

<a></a>

Что я делаю не так?

1 Ответ

5 голосов
/ 19 октября 2019

Необходимо сначала найти и вернуть элемент, для которого изменяется атрибут

use warnings;
use strict;
use feature 'say';
use Mojo::DOM;

my $dom = Mojo::DOM->new('<a></a>');

$dom->at('a')->attr({ 'href' => 'https://foo/bar' });

say $dom;

Это необходимо, поскольку для всего дерева нет "атрибута". Как говорят документы в начале

Хотя все типы узлов представлены как Mojo::DOM объекты, некоторые методы, такие как attr и namespace, применяются только к элементам.

(" elements " - узлы типа "tag", см. Ссылку)

...