2

次のような XML 文字列があります。

<DATA>
   <CHILD_DATA ATVAL="value1"/>
   <CHILD_DATA />
</DATA>

私が望む最終的な出力は次のとおりです。

<DATA>
   <CHILD_DATA ATVAL="value1"/>
   <CHILD_DATA ATVAL="value2"/>
</DATA>

私の小枝$tは にあり<DATA>ます。次に、2 番目の に属性を追加します<CHILD_DATA />。属性はATVAL="value2". 私は次のことを試しました:

$t->last_child('CHILD_DATA')->set_att{"ATVAL","value2"};

これはうまくいきませんでした。このコードの何が問題になっていますか? これを行う別の方法はありますか?

4

2 に答える 2

6

Jon が示唆したように、投稿したコードに構文エラーがあります。次のようなコンパイル エラーが表示されるはずです。

"->set_att{" 付近のテスト行 18 の構文エラー コンパイル エラーのため、program.pl の実行が中止されました。

ただし、コードが実際に行っていることと一致しないように、回答にコードを入力している可能性があります。再入力するのではなく、常に実際のコードを質問に入れ、可能な場合は常に完全なプログラムを投稿してください。あなたがプログラムを投稿するとき、私はあなたが行っていると思われるものをデバッグするためにゼロから始める必要はありません。:)

これがあなたが望むことをするプログラムです:

use XML::Twig;

my $xml = <<'XML';
<DATA>
   <CHILD_DATA ATVAL="value1"/>
   <CHILD_DATA />
</DATA>
XML

my $twig= XML::Twig->new( keep_spaces => 1 );

$twig->parse( $xml );

$twig
    ->root
    ->last_child('CHILD_DATA')
    ->set_att("ATVAL" => "value2");

$twig->flush;
于 2009-08-12T08:52:28.107 に答える
2

ほんの少しの考え:

  1. 同じ質問を何度も投稿しても、誰もあなたを助けてくれません。

  2. あなたのコードは構文的にも正しくないので、問題が発生していても不思議ではありません。

  3. 発生しているエラーを含めないのはなぜですか? おそらく、それは問題に光を当てるかもしれませんか?

于 2009-08-12T06:32:49.450 に答える