0

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

示例 XML:

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

我正在寻找一种使用 Perl 拆分函数或使用 Regex 提取标题属性值的好方法。如果我能够在托管代码的服务器上安装 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 /\"/

我也尝试过使用正则表达式做类似的事情,但也没有运气。我不确定我是否只是没有使用正确的表达式,或者使用拆分/正则表达式是否不可能。对此事的任何帮助将不胜感激,因为我承认我仍然是 Perl 的新手。如果此类问题已在其他地方得到解答,我深表歉意。我做了一些搜索,但找不到解决方案。大多数线程建议使用 XML 解析 Perl 模块,如果我有安装它们的权限,我会这样做。

4

1 回答 1

5

“但我不能使用 CPAN”是一种让自己在 Perl 标签上被否决的快速方法(尽管不是我这样做)。即使您没有 root,也可以通过多种方式使用CPAN 事实上,即使您没有 root,您也可以拥有自己的 Perl 。虽然我强烈推荐其中一些选项,但就目前而言,最简单的方法就是下载一些 Pure Perl 模块,并将它们包含在您的代码库中。Mojolicious有一个非常小但非常有用的 XML/DOM 解析器,称为Mojo::DOM,它可能是此类过程的候选者。

于 2013-04-09T18:34:14.430 回答