1

以下のようなXMLファイルがあります。DOMDocument を使用する必要があるため、追加のクラスは許可されません。(単純化したことに注意してください。実際のファイルには、saleItems と catalogItems の両方に多くのエントリがあります):

<?xml version="1.0"?>
<catalog>
    <saleItems count="3">

        <item name="Xbox 360 Wired Controller" price="19" stock="50" salePrice="12" onSale="yes">
            <image>Xbox360Controller.jpg</image>
            <description>A wired controller for an Xbox 360 Game Console. Comes in either white or black.</description>
        </item>

    </saleItems>

    <catalogItems count="12">
        <item name="Dell Alienware Laptop 15 inch" price="2500" stock="200" salePrice="0" onSale="no">
            <image>alienwareLaptop.jpg</image>
            <description>sample description here</description>
        </item>
    </catalogItems>
</catalog>

次のことを行う必要があります。

1) name="" 属性に基づいて更新するノードを見つけます (例: 適切なアイテムを見つけるために必要な唯一のデータはアイテム名です)

2)見つかったら、そのアイテムの数量属性を編集する必要があります (減算 1)。

3)数量が更新されたら、XML ファイルをサーバーに保存し直す必要があります。

私はこれで終わりです.$domDocumentを協力させるのに苦労しています..これは私がこれまでに持っているものですが、まったく適切に機能していないようです. ストックを取得して差し引くことはできますが、変更内容がファイルに保存されません。

foreach( $GLOBALS['catalogItems'] as $item ){
    if( $item->getAttribute('name') == $itemName ){
        // we have a match
        $oldStock = $item->getAttribute("stock");
        $item->setAttribute("stock", $oldStock + $modifier);

        $dom->save('xml/catalog.xml');
    }
}

どんな助けでも大歓迎です!

4

1 に答える 1

1

PHP チャットで解決: https://chat.stackoverflow.com/transcript/message/7402294#7402294

$GLOBALS['catalogItems']問題は、含まれているDOMText項目のセレクターが、 を呼び出したときに失敗すること$item->getAttribute('name')でした。解決策は、$itemが実際にitemノードであることを確認してから、それがitem.

于 2013-01-28T04:42:30.550 に答える