【发布时间】:2020-06-09 13:59:04
【问题描述】:
我有一个不完整的 Perl 脚本,其内容如下:
use XML::LibXML;
use XML::LibXSLT;
my $xml_mess = "
<activity>
<ref1></ref1>
<ref2>id_119604</ref2>
<ref3>id_342432</ref3>
</activity>";
my $parser = XML::LibXML->new();
my $xml_mess_obj = $parser -> parse_string($xml_mess);
my $ref1 = $xml_mess_obj -> getDocumentElement -> findNodes("/activity/ref1") -> [0] -> to_literal();
my $ref2 = $xml_mess_obj -> getDocumentElement -> findNodes("/activity/ref2") -> [0] -> to_literal();
my $ref3 = $xml_mess_obj -> getDocumentElement -> findNodes("/activity/ref3") -> [0] -> to_literal();
我想解析$xml_mess 并进行以下更改:
- 当
ref3有值时,我希望ref1有相同的值。 - 当
ref3没有值时,我希望ref1具有与ref2相同的值。
我一直在寻找有关如何使用 LibXML 执行此操作的示例,但不知道如何有条件地更新节点。
【问题讨论】:
-
请确保您的示例代码可以编译。
-
提示:
-> getDocumentElement不是必需的。文档元素提供findNodes -
提示:
-> findNodes(...) -> [0] -> to_literal()可以替换为-> findvalue(...)
标签: perl xml-libxml