无法在@INC中找到 XML/LibXML/Element.pm



我已经使用CPAN安装了XML:LibXML,但仍然得到以下错误:

Can't locate XML/LibXML/Element.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .)
下面是我的代码:
#!usr/bin/perl
use XML::LibXML::Element;
my $pxml = '/cctest/projects.xml';
my $twigp = XML::LibXML->new-> parse_file($pxml);
my $result = $twigp->getChildrenByTagName('branched_from_id');
print $result->to_literal,"n";

projects.xml:

<projects>
    <project>
                    <id>ID_2_19_16_12_15</id>
                    <name>RPSW </name>
                    <branch>fb16</branch>
                    <location>/draw/projects</location>
                    <author>Ras</author>
                    <branched_from_id>ID_10_8_13_12_35</branched_from_id>
                    <branched_from_version>175</branched_from_version>
            </project>
<project>
                <id>ID_1_21_14_1_13_24_PM</id>
                <name>Platform</name>
                <location>/draw/projects</location>
                <author>lav</author>
                <assigned_user>ka</assigned_user>
</project>
</projects>

请帮我找出我做错了什么?要求只获取具有元素branched_from_id的节点。

如果我使用您的代码,我会得到相同的Can't locate module错误。但是如果我使用

它就消失了
use XML::LibXML; 
$node = XML::LibXML::Element->new( $name );

在本模块的简介中也有提及。

你得到错误,因为没有元素。点文件。XML::LibXML::Element是LibXML.pm中的一个包。见:https://metacpan.org/source/shlomif/xml libxml - 2.0128 -/- libxml.pm

例如,如果模块Mod::Test

package Mod::Test;
#do something
package Mod::Test::Another;
#do something
1;

在脚本中作为

使用
#!/usr/bin/perl
use strict;
use warnings;
use Mod::Test::Another;

你会得到错误,但如果你选择use Mod::Test,你就不会得到错误。


顺便说一句,下面是一个不使用XML::LibXML::Element来查找标签的方法。

#!/usr/bin/perl
use strict;
use warnings;
use XML::LibXML;
my $filename = "projects.xml";
my $parser = XML::LibXML->new();
my $xmldoc = $parser->parse_file($filename);
for my $node ($xmldoc->findnodes('/projects/project')) {
    for my $property ($node->findnodes('./*')) {
        if ($property->nodeName() eq 'branched_from_id'){
            print "Found branched_from_id node, value is ".$property->textContent();
        }
    }
    print "n";
}
输出:

$ perl test.pl 
Found branched_from_id node, value is ID_10_8_13_12_35

相关内容

  • 没有找到相关文章

最新更新