-2

誰かが私を助けてくれるかもしれない問題があります。私は経験豊富なプログラマーではありませんが、より多くを学ぶことができるように、高度な回答をいただいても構いません。

xml ファイルをダウンロードして開き、読み取ります。特定の条件が満たされると、そのノードの値を変更すると、これは正常に機能します。しかしその後、変更したばかりのノード全体を新しいxmlファイルに書きたいのですが、ここで問題が発生しました。新しいドキュメントの既存のノードを常に上書きしていることを示す最後のノードを保存することができました。

これは私のコードです:

$prodsToSave = new DOMDocument(); //my new document
$prods = new DOMDocument(); 
$prods = simplexml_load_file('http://urltofile.com');

foreach ($prods as $product) {
    if($product->merchantCategoryName == 'CD') { 
        $productToSave = $product;
        $productToSave->merchantCategoryName = 'Musik > CD';
        $prodsToSave=$productToSave;
    }
    $prodsToSave->saveXML('newdocument.xml');
}

新しいドキュメントにノードが 1 つしか書き込まれていない理由はわかりますが、それを変更する方法がわからないので、すべてのノードを新しいドキュメントに取得しますか?

4

1 に答える 1

0

変数を設定してから再度直接上書きするのは不要です。

 $a = 'something really cool';
 $a .= ' and awsome.';
 $a = $b;

このコードを最後の行に大幅に要約できます。

 $a = $b;

それで、何が残っていますか?

$prods = simplexml_load_file('http://urltofile.com');

foreach ($prods as $product) {
    if ($product->merchantCategoryName != 'CD') { 
        continue;
    }
    $product->merchantCategoryName = 'Musik > CD';
    $product->saveXML('newdocument.xml');
}

コードを減らすと、読みやすく、理解しやすくなります。そのため、ときどき時間をかけて自分のコードを見直し、自分のコードを減らす必要があります。

これがお役に立てば幸いです。

于 2013-04-30T09:05:32.280 に答える