2010-05-18 7 views
0

이 예에서는 '96'번을 사용합니다. 목표를 달성하기 위해 XML :: LibXML-Number-object가 필요한 경우가 있을까요?XML :: LibXML :: Number-object를 XML :: LibXML-example에서 사용할 이유가 있습니까?

#!/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="hours">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; 

my $result = $root->find('//files/age[@units="hours"]'); 
$result = $result->get_node(1); 
say ref $result; # XML::LibXML::Element 
say $result->textContent; # 96 

$result = $root->find ('number(//files/age[@units="hours"])'); 
say ref $result; # XML::LibXML::Number 
say $result; # 96 
+0

당신은 무엇을 명확히 할 수 있습니다 달성하기 위해 노력하고 있으며, 무엇이 잘못되었는지에 대한 작은 예를 들어 줄 수 있습니까? – Ether

+0

이 경우에는 아무 문제가 없습니다. XML :: LibXML :: Number-object가 필요하다는 것을 저를 설득 할 수있는 XML :: LibXML :: Number-object로 예제를 찾고 있습니다. –

답변

2

XML :: LibXML 꽤 많이 사용했지만 XML :: LibXML :: Number 클래스가 없습니다. XPath 표현식이 노드의 텍스트 내용에 대해 숫자 어설 션을 수행하도록 허용하는 것 (예 :> 10)이있는 것으로 보입니다. 당신이 원하는 모든 숫자 '96'이 다음 가장 쉬운 방법은 아마 인 경우

:

my $result = $root->findvalue('//files/age[@units="hours"]'); 

내가 여러 값을 얻기위한 유용한 관용구는 다음과 같습니다

my @values = map { $_->to_literal } $doc->find('//files/age'); 
관련 문제