Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Perl提取XML标记_Xml_Perl_Parsing - Fatal编程技术网

使用Perl提取XML标记

使用Perl提取XML标记,xml,perl,parsing,Xml,Perl,Parsing,我需要一个Perl脚本来分离XMl标记。例如: <bgtres> <resume key='267298871' score='5'> <xpath path='xpath://resume'> <resume canonversion='2' dateversion='2' present='734060'>........... </resume></xpath></resume> </bgtre

我需要一个Perl脚本来分离XMl标记。例如:

<bgtres>
 <resume key='267298871' score='5'>
 <xpath path='xpath://resume'>
 <resume canonversion='2' dateversion='2' present='734060'>........... </resume></xpath></resume>
</bgtres>
在这个XML文件中,我需要在xpath中分离resume标记下的内容,xpath之后出现的resume标记应该单独从CV包中提取出来。我需要在Perl脚本中执行此操作

任何人都可以给我一个提示或编码来完成这个过程。我需要Perl脚本来完成这个过程

提前感谢

您需要使用。

您需要使用

请参阅-A perl模块 用于在中处理巨大的XML文档 树模式。 或-易于使用的API 维护XML esp配置文件 像

输出:

请参阅-A perl模块 用于在中处理巨大的XML文档 树模式。 或-易于使用的API 维护XML esp配置文件 像

输出:


我对perl还是一个新手,我不是这方面的专家。这就是说,我最近不得不解析一个XML文件,结果使用了它。我看到的一件好事是,当我在一个月后不得不回去添加更多功能时,代码仍然相当容易阅读。下面是一个小片段来打印佳能版本

use XML::DOM;
# Create instance of XML Dom Parser
my $parser = new XML::DOM::Parser;
# Read XML Doc
my $doc = $parser->parsefile ("$XMLFile");
# Fetch all resume tags
foreach my $resume ($doc->getElementsByTagName("resume")) {
    $canonversion = $resume->getAttributeNode("BuildName")->getValue;
    # Do something with it
    print $canonversion;
}

希望这能有所帮助。

我对perl还是新手,我不是这方面的专家。这就是说,我最近不得不解析一个XML文件,结果使用了它。我看到的一件好事是,当我在一个月后不得不回去添加更多功能时,代码仍然相当容易阅读。下面是一个小片段来打印佳能版本

use XML::DOM;
# Create instance of XML Dom Parser
my $parser = new XML::DOM::Parser;
# Read XML Doc
my $doc = $parser->parsefile ("$XMLFile");
# Fetch all resume tags
foreach my $resume ($doc->getElementsByTagName("resume")) {
    $canonversion = $resume->getAttributeNode("BuildName")->getValue;
    # Do something with it
    print $canonversion;
}

希望有帮助。

是Perl,不是Perl-这是Perl,不是Perl-DOM非常古老,现在并不是真正推荐的处理XML的方法。XML::LibXML有一个非常相似的接口,但速度更快、功能更强大、维护更好。@mirod感谢您的建议,我刚刚修改了我的旧脚本,使用LibXML而不是XML dom,我看到速度有了显著的提高……XML::dom非常古老,现在并不是真正推荐的处理XML的方法。XML::LibXML有一个非常相似的接口,但速度更快、功能更强大、维护更好。@mirod感谢您的建议,我刚刚修改了我的旧脚本,使用LibXML而不是XML dom,我看到速度有了显著提高。。。
use XML::DOM;
# Create instance of XML Dom Parser
my $parser = new XML::DOM::Parser;
# Read XML Doc
my $doc = $parser->parsefile ("$XMLFile");
# Fetch all resume tags
foreach my $resume ($doc->getElementsByTagName("resume")) {
    $canonversion = $resume->getAttributeNode("BuildName")->getValue;
    # Do something with it
    print $canonversion;
}