gpt4 book ai didi

xml - 查找子节点的值

转载 作者:数据小太阳 更新时间:2023-10-29 02:31:09 25 4
gpt4 key购买 nike

好的,这是一个非常基本的问题,但我是 Perl 的新手,老实说,我似乎无法在任何地方找到答案,尽管我确信它会非常简单。

假设我有以下 XML 架构:

<root>
<parentNode status="Good">
<A>
<B>
<value><![CDATA[This is my value]]</value>
</B>
</A>
</parentNode>
</root>

假设将有多个具有不同状态的父节点。

我正在尝试编写一个脚本,该脚本将为我提供状态不是“良好”的父节点的每个值节点的内容

使用以下代码我已经能够成功获得正确的父节点:

my $parser = XML::LibXML->new();
my $tree = $parser->parse_file($xml_file);
my $root = $tree->getDocumentElement;
my @records = $root->findnodes("//parentNode");
foreach my $node (@records) {
my $resultAtt = $node->getAttribute('status');
next if $resultAtt ne "Good";

但是当我尝试时:

my $val = $node->findvalue("value");

我一无所获。

此外,我真的只对“这是我的值(value)”部分感兴趣。当您读取值时,CDATA 是否会影响它?

最佳答案

您的 XPath 需要是隐式的。

而不是使用:my $val = $node->findvalue("value");你应该使用:$val = $node->findvalue('./A/B/value');

你应该会成功 :D

复制您的代码(并修复 CDATA 以获得右尖括号)并改用上面的代码片段:

$ ./test2.pl 
Found the value: This is my value
$

关于xml - 查找子节点的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14513601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com