XML::Smartを使用してXMLファイルを作成および解析する単純なPerlスクリプトを作成しています。XMLノードの削除で問題が発生しました。私は次のコードを持っています:
if ( exists $XML->{object}[$n] ) {
delete $XML->{object}[$n] ;
};
$XML->save('dane.xml') ;
期待どおりの動作をします。つまり、正しいノードが削除されます。ただし、後で以下のコード(通常は機能します)を使用して、すべてのノード(特定のルートの子)を一覧表示しようとすると、次のようになります。
my @objects = $XML->{object}('@') ;
foreach my $object (@objects) {
say "$object->{address}";
};
Perlは、削除されたノードの前のノードまでのすべてのノードを一覧表示し、次のエラーを吐き出します。
Not a HASH reference at g:/Dwimperl/perl/site/lib/XML/Smart/Tie.pm line 48, <STDIN> line 2.
私は困惑しています-$XML->data();のさまざまな順列を使用してみました。しかし、どれも機能しませんでした。このタスクには引き続きXML::Smartを使用したいので、この特定のライブラリ内でこの問題を解決できることを願っています。