【问题标题】:Perl Extracting XML Tag Attribute Using Split Or RegexPerl 使用拆分或正则表达式提取 XML 标记属性
【发布时间】:2013-04-10 02:34:14
【问题描述】:

我正在开发一个文件上传系统,该系统还可以解析上传的文件并根据上传的文件中的信息生成另一个文件。作为 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 模块,如果我有安装它们的权限,我会这样做。

【问题讨论】:

标签: perl


【解决方案1】:

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

【讨论】:

  • 感谢您的回复和建议。我肯定会研究 Perlbrew。我承认我没有想到在没有 root 访问权限的情况下安装模块的方法,这对我来说非常愚蠢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
  • 2010-09-23
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多