2013-04-09 78 views
0

我正在研究文件上傳系統,該系統還根據上傳的文件中的信息解析上傳的文件並生成另一個文件。這些文件以XML文件的形式上傳。我只需要解析每個文件中的第一個XML標記,並且只需要獲取標記中單個屬性的值。Perl使用Split或Regex提取XML標籤屬性

示例XML:

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

我要找提取使用Perl的分裂功能的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"; 
    } 
} 

我一直在使用拆分來匹配標題試圖單獨使用

/title/ 

還是對陣=字符或「字符使用

/\=/ or /\"/ 

我也嘗試過使用正則表達式做類似的事情,並沒有l也是。我不確定我是不是使用正確的表達式,或者如果這是不可能的使用split/regex。任何關於此事的幫助都將非常感激,因爲我仍然是Perl的新手。如果這類問題已在別處得到解答,我表示歉意。我做了一些搜索,找不到解決方案。大多數線程都建議使用XML解析Perl模塊,如果我有權限安裝它們,我會這樣做。

+3

2013年。使用XML解析器。 – 2013-04-09 18:28:03

+2

[是的,即使你可以使用CPAN](http://www.perlmonks.org/?node_id=693828)。 – 2013-04-09 18:30:04

+0

乾杯,謝謝你的信息。 – Fedexico 2013-04-09 19:23:24

回答

5

「但我不能使用CPAN」是一種快速的方式讓自己在Perl標籤上投下一票(儘管不是我這樣做的)。有many ways你可以使用CPAN,即使你沒有root。事實上,即使您沒有root,您也可以擁有your own Perl。儘管我強烈推薦其中的一些選項,但現在最簡單的方法就是下載一些Pure Perl模塊,並將它們包含在您的代碼庫中。 Mojolicious有一個非常小但非常有用的XML/DOM解析器,稱爲Mojo::DOM,它可能是這種過程的候選者。

+0

感謝您的回覆和建議。我一定會考慮Perlbrew。我承認我沒有想到在沒有root權限的情況下安裝模塊的方式,這對我來說很愚蠢。 – Fedexico 2013-04-09 19:27:11