0

私は、アップロードされたファイルを解析し、アップロードされたファイル内の情報に基づいて別のファイルを生成するファイル アップロード システムに取り組んでいます。XML ファイルとしてアップロードされるファイル。各ファイルの最初の XML タグを解析するだけで済み、タグ内の 1 つの属性の値を取得するだけで済みます。

サンプル XML:

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

Perl の分割関数または正規表現を使用して、タイトル属性の値を抽出する良い方法を探しています。コードをホストしているサーバーに 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 /\"/

また、正規表現を使用して同様のことを試みましたが、運もありませんでした。適切な表現を使用していないだけなのか、分割/正規表現を使用してこれが不可能なのかはわかりません。私はまだPerlの初心者であることを認めているので、この問題に関する助けをいただければ幸いです。この種の質問が他の場所で回答されている場合は、お詫び申し上げます。私はいくつかの検索を行いましたが、解決策を見つけることができませんでした。ほとんどのスレッドは、XML 解析 Perl モジュールを使用することを提案していますが、それらをインストールする権限があればそうします。

4

1 に答える 1

5

「しかし、私は CPAN を使用できません」は、Perl タグに反対票を投じる手っ取り早い方法です (そうしたのは私ではありませんが)。root を持っていなくても、CPAN を使用できる方法はたくさんあります。実際、root を持っていなくても、独自の Perl を持つことができます。これらのオプションのいくつかを強くお勧めしますが、今のところ、これを行う最も簡単な方法は、いくつかの Pure Perl モジュールをダウンロードしてコードベースに含めることです。Mojoliciousには、この種のプロセスの有力候補であるMojo::DOMと呼ばれる非常に小さいが非常に便利な XML/DOM パーサーがあります。

于 2013-04-09T18:34:14.430 に答える