【发布时间】:2019-11-13 02:04:49
【问题描述】:
我从 Perl 开始,我知道有一些类似的问题得到了解答,但是(由于我缺乏经验)它们都没有帮助。
我有这样的xml:
<workflowVertices>
<workflowVertex>
<alias />
<task>Task_L2</task>
<vertexId>128</vertexId>
</workflowVertex>
<workflowVertex>
<alias />
<task>preTask_L1</task>
<vertexId>129</vertexId>
</workflowVertex>
</workflowVertices>
我需要删除所有具有 node task =~ m/_L1/ 的 workflowVertex 节点
我现在拥有的:
my $dom = XML::LibXML->load_xml(location => $filename);
foreach my $name ($dom->findnodes('workflowVertices/workflowVertex/task'))
{
#say $name->to_literal();
if ($name->to_literal() =~ m/_L1/) {
say "JobName: " . $name->to_literal() . " to be deleted\n";
my $node = $name->to_literal();
my $parent = $name-> parentNode();
say $parent-> removeChild("task[$node]")
}
}
但是当我执行它时它会出错:
XML::LibXML::Node::removeChild() -- node is not a blessed SV reference at
xmltransform.pl 第 28 行。
第 28 行。在我的代码中是
say $parent-> removeChild("task[$node]")
有人可以帮我吗?
【问题讨论】:
-
投票结束,因为问题是由拼写错误引起的。该方法称为
removeChild,而不是RemoveChild。 -
-
@JanFi86 也许这有帮助:ubuntuforums.org/showthread.php?t=299381
-
@JanFi86:所以有人修复了您发布的问题,您通过编辑问题来提出不同的问题来回应?这有点粗鲁,真的。请恢复您的编辑并在新帖子中提出您的新问题。
-
@Dave Cross,对不起,谢谢你的指教。我认为如果问题仍然存在于同一行代码中,那么最好留在同一个问题上。但我至少应该肯定会在那里发表编辑评论。下次我会更小心的,没有恶意。谢谢
标签: xml perl xml-libxml