[perl] XML::SimpleでXMLのハイフン入りの要素名が取得できない

投稿者: | 2013-09-05

PerlのXML::Simpleを利用してXMLデータを加工しようと思ったのだけれど、ハッシュのキーを取得する時にエラーが発生

Bareword “CHAR” not allowed while “strict subs” in use at third.pl line XX. (CHARは実際には文字列)

どこが問題なのかはすぐに分かった。ハイフンが入っている文字列の部分だ。ちなみにこれはPerlプログラミングでお馴染みの use strict(の、use strict “subs”)による警告なのだそうだ。

use strict; を使う理由 – とりあえずメモメモ。

同じ問題を抱えているPHPプログラマの方がいた。(なお、今回のブログタイトルはこちらの方の記事タイトルから一部拝借した。)

phpのSimpleXMLでXMLのハイフン入りの要素名が取得できない|本を買わずに解決するWeb制作の小技

XML ドキュメント内の要素のうち、PHP の命名規約で

許可されていない文字 (たとえばハイフンなど) を含む

名前のものにアクセスするには、 要素名を括弧とアポストロフィで囲みます。

Example#3 <line> を取得する

<?php
include ‘example.php’;

$xml = new SimpleXMLElement($xmlstr);

echo $xml->movie->{‘great-lines’}->line; // “PHP solves all my web problems”
?>

要素名をアポストロフィで囲めばよかった。この記事のお陰で僕はハマらずに済んだ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です