0

http://metacpan.org/pod/XML::LibXML::Nodeから:

find は、現在のノードを式のコンテキストとして使用して XPath 1.0 式を評価し、XPath 式の結果のタイプに応じて結果を返します。たとえば、XPath "1 * 3 + 52" では、XML::LibXML::Number オブジェクトが返されます。他の式は、XML::LibXML::Boolean オブジェクト、または XML::LibXML::Literal オブジェクト (文字列) を返す場合があります。

私の例では、find は XML::LibXML::Literal オブジェクト (文字列) を返すと思います。find が XML::LibXML::Number オブジェクトを返す例を教えてください。XML::LibXML::Boolean オブジェクト?

#!/usr/bin/env perl
use warnings; use strict;
use 5.012;
use XML::LibXML;

my $xml_string =<<EOF;
<?xml version="1.0" encoding="UTF-8"?>
<filesystem>
   <path>
     <dirname>/var</dirname>
     <files>
       <action>delete</action>
       <age units="days">10</age>
     </files>
     <files>
       <action>delete</action>
       <age units="hours">96</age>
     </files>
   </path>
</filesystem>
EOF
#/

my $doc = XML::LibXML->load_xml( string => $xml_string );
my $root = $doc->documentElement;

say $root->find( '//files[1]/action' );

出力

消去

4

2 に答える 2

1
$root -> find ("number(//files/age[@units = 'hours']"))
于 2010-05-18T07:51:42.783 に答える