わかりました、これはかなり初歩的な質問ですが、私はPerlに不慣れであり、ばかばかしいほど単純であると確信しているにもかかわらず、正直なところどこにも答えを見つけることができないようです。
次のXMLスキーマがあるとしましょう。
<root>
<parentNode status="Good">
<A>
<B>
<value><![CDATA[This is my value]]</value>
</B>
</A>
</parentNode>
</root>
ステータスが異なる複数のparentNodeが存在するとします。
ステータスが「良好」ではないparentNodesの各値ノードのコンテンツを取得するスクリプトを作成しようとしています。
次のコードを使用して、正しい親ノードを正常に取得できました。
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");
何も得られません。
さらに、私は「これは私の価値です」の部分に本当に興味があります。値を読み取るとき、CDATAは値にまったく影響しますか?