Perl 使用XML::LibXML向元素添加新类
我有一个简单的HTML代码段,如下所示: 这是一段Perl 使用XML::LibXML向元素添加新类,perl,xml-libxml,Perl,Xml Libxml,我有一个简单的HTML代码段,如下所示: 这是一段另一个 我需要向外部p元素添加一个新类b,从而产生以下预期结果: 这是一个段落另一个 内部p元素应保持不变 这可能吗?找到正确的元素并使用方法更改其属性 下面的代码使用注释中澄清的要求:感兴趣的段落是div下面的第一个段落,如果存在,则需要添加或创建其属性class use warnings; use strict; use feature 'say'; use XML::LibXML; my $xml = q(<div class="
另一个
我需要向外部p
元素添加一个新类b
,从而产生以下预期结果:
这是一个段落另一个
内部p
元素应保持不变
这可能吗?找到正确的元素并使用方法更改其属性
下面的代码使用注释中澄清的要求:感兴趣的段落是div
下面的第一个段落,如果存在,则需要添加或创建其属性class
use warnings;
use strict;
use feature 'say';
use XML::LibXML;
my $xml = q(<div class="out"><p class="a">This is a paragraph. )
. q(<p class="b">another</p></p></div>); #/
my $doc = XML::LibXML->load_xml(string => $xml);
my @nodes = $doc->findnodes('//p');
for my $node (@nodes) {
if ($node->parentNode->nodeName eq 'div') {
my $attr_val = $node->getAttribute('class');
$node->setAttribute(
class => ($attr_val ? "$attr_val " : '') . 'b'
);
}
}
say $doc;
然后将其附加到类
属性,或以与上面相同的方式创建它
上面的照片
这是一个段落另一个
找到正确的元素并使用方法更改其属性
下面的代码使用注释中澄清的要求:感兴趣的段落是div
下面的第一个段落,如果存在,则需要添加或创建其属性class
use warnings;
use strict;
use feature 'say';
use XML::LibXML;
my $xml = q(<div class="out"><p class="a">This is a paragraph. )
. q(<p class="b">another</p></p></div>); #/
my $doc = XML::LibXML->load_xml(string => $xml);
my @nodes = $doc->findnodes('//p');
for my $node (@nodes) {
if ($node->parentNode->nodeName eq 'div') {
my $attr_val = $node->getAttribute('class');
$node->setAttribute(
class => ($attr_val ? "$attr_val " : '') . 'b'
);
}
}
say $doc;
然后将其附加到类
属性,或以与上面相同的方式创建它
上面的照片
这是一个段落另一个
(1)“外部p
元素”是指div
正下方的元素吗?(2)“添加新类”是指在class
属性存在时添加到它所具有的任何属性。还是…?(1)是。(2)如果class
属性不存在,则添加该属性;否则,将新的classb
附加到现有的class
属性中。(1)“外部p
元素”是否表示div
正下方的元素?(2)“添加新类”是否表示如果class
属性存在,则将其添加到所有属性中。或者…?(1)是的。(2) 添加class
属性(如果该属性尚不存在);否则,将新类b
附加到现有的class
属性。