如何使用 XML::LibXML 模块的 findnodes() 函数在 XPath 表达式中使用 Perl 变量?这就是我得到的:
my $variable = 1;
foreach my $node1 ($doc->findnodes('par/par1/par2[@id = $variable]'))
{
}
但这似乎不起作用。谢谢。
如何使用 XML::LibXML 模块的 findnodes() 函数在 XPath 表达式中使用 Perl 变量?这就是我得到的:
my $variable = 1;
foreach my $node1 ($doc->findnodes('par/par1/par2[@id = $variable]'))
{
}
但这似乎不起作用。谢谢。
您不能使用单引号进行插值,必须使用双引号或其他可以插入的引用形式
"par/par1/par2[\@id = $variable]"
但是,我假设这@id
不是一个变量,所以你必须逃避它的印记,否则它也将被视为一个变量。如果你使用use strict
——你总是应该——这将导致编译器错误。
可能会提到的其他引用形式
qq()
, 这和双引号完全一样编辑:向 TLP 致敬
哈里茨,
将 XPath 表达式周围的单引号更改为双引号是否有效?
我来这里是为了寻找完全相同的解决方案,并在我的一个脚本中进行了尝试,我认为它与双引号而不是单引号的工作原理相同,但我很想知道它是否也适合你。
my $variable = 1;
foreach my $node1 ($doc->findnodes("par/par1/par2[\@id = $variable]"))
{
}