XML ファイルは次のようになります。
<?xml version="1.0"?>
<application name="pos">
<artifact id="123" type="war" cycle="Release7-Sprint1">
<jira/>
<jenkins/>
<deployment/>
<scm>
<transaction id="1234" user="">
<file name=""/>
<file name=""/>
</transaction>
</scm>
</artifact>
</application>
私のコードは以下のようになり、変数を使用する代わりに属性 (名前) のハードコードされた値を使用すると正常に動作します。行を参照しています ( my $query =
'//application[@name="pos"]'; )
my $manifestDoc = $manifestFileParser->parse_file($manifestFile);
my $changeLogDoc = $changeLogParser->parse_file($changeLogXml );
my $changeLogRoot = $changeLogDoc->getDocumentElement;
#my $applicationName = pos;
my $query = '//application[@name="pos"]';
my $applicationNode = $manifestDoc->findnodes($query);
my $artifactNode = $manifestDoc->createElement('artifact');
$artifactNode->setAttribute("id",$artifactID);
$artifactNode->setAttribute("type",$artifactType);
$artifactNode->setAttribute("cycle",$releaseCycle);
$applicationNode->[0]->appendChild($artifactNode);
しかし、$query 変数を変更して、属性のハードコードされた値の代わりに変数 ($applicationName) を使用すると、次のようなコンパイル エラーが発生します。
updateManifest.pl 行の未定義の値に対してメソッド「appendChild」を呼び出せません
変更されたコード:
my $applicationName = "pos" ;
my $query = '//application[@name="$applicationName"]';
何が悪いのかわからない。引用符と関係がありますか?どんな助けでも大歓迎です。