Perl使用Split或Regex提取XML标记属性

时间:2013-04-09 18:27:02

标签: perl

我正在开发一个文件上传系统,该系统还会解析上传的文件,并根据上传文件中的信息生成另一个文件。文件作为XML文件上载。我只需解析每个文件中的第一个XML标记,只需要获取标记中单个属性的值。

示例XML:

<LAB title="lab title goes here">...</LAB>

我正在寻找一种使用Perl分割函数或使用Regex提取title属性值的好方法。如果我能够在我托管我的代码的服务器上安装Perl模块,我会使用Perl XML解析器,但是我没有这种能力。

这个XML位于XML文件中,我打开然后尝试解析属性值。我试过使用Split和Regex都没有运气。但是,我对Perl或正则表达式并不十分熟悉。

这是他到目前为止基本概述我的代码:

open(LAB, "<", "path-to-file-goes-here") or die "Unable to open lab.\n";
foreach my $line (<LAB>) {
    my @pieces = split(/"(.*)"/, $line);
    foreach my $piece (@pieces) {
        print "$piece\n";
    }
 }

我尝试使用split来使用

单独匹配标题
/title/

或者使用

匹配=字符或“字符”
/\=/ or /\"/

我也尝试使用正则表达式做类似的事情,也没有运气。我不确定我是不是使用正确的表达式,或者如果使用split / regex这是不可能的。任何有关此事的帮助都会非常感激,因为我无疑是Perl的新手。如果在其他地方回答了这类问题,我道歉。我做了一些搜索,找不到解决方案。大多数线程建议使用XML解析Perl模块,如果我有权安装它们,我会这样做。

1 个答案:

答案 0 :(得分:5)

“但是我不能使用CPAN”是一种让你自己在Perl标签上投票的快速方法(虽然我不是这样做的)。即使您没有root,也可以many ways使用CPAN。实际上,即使您没有root,也可以拥有your own Perl。虽然我强烈推荐其中一些选项,但目前最简单的方法是下载一些Pure Perl模块,并将它们包含在您的代码库中。 Mojolicious有一个非常小但非常有用的XML / DOM解析器Mojo::DOM,它可能是这种过程的候选者。