我正在编写一个perl脚本以对XML文件进行一些更改,而我需要做的一件事就是找到一个实体并替换另一个实体。
我想找到
<myelement>▪</myelement>
并替换为
<myelement>•</myelement>
我正在尝试使用xml :: dom :: node-> devententityrefs()函数,但没有任何运气。我基本上是在尝试这样做:
# $nodeMyElement declared at top of function, not shown
my $textNode = $nodeMyElement->getFirstChild();
my $sChildText = $textNode ->toString();
# when calling from main node, the string is just nothing
my $test = $nodeMyElement ->expandEntityRefs( $sChildText );
#从主软件包打电话时,我会收到一个错误:无法使用字符串(" xml :: dom :: node")作为数组参考/xml/dom.pm行1244。 我的$ test2 = xml :: dom :: node-> devententityrefs($ schildtext);
关于我做错了什么或解决这个问题的更好方法的任何想法?谢谢,BP
我必须承认我不是最好的回答的人,而且我不知道xml :: dom。我个人会使用Mojo :: DOM,但这仅仅是因为我知道的。另外,我仍在尝试赶上Unicode的内容。我所说的就是我想到的:
#!/usr/bin/env perl
use strict;
use warnings;
use v5.10;
use utf8::all;
use Mojo::DOM;
my $dom = Mojo::DOM->new->xml(1)->parse(<<'END');
<myelement>▪</myelement>
END
$dom->find('myelement')
->grep(qr/x{25aa}/)
->pluck(replace_content => "x{2022}");
say $dom;
问题是我似乎无法回到&#x
编码。我敢肯定(?)必须有一种方法,或者更好地强迫它一直保持这种状态。有人吗?