1

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"]';

何が悪いのかわからない。引用符と関係がありますか?どんな助けでも大歓迎です。

4

1 に答える 1