-2

私はオンライン ストアを作成する学校の課題に取り組んでいます。管理者がアイテムの在庫を更新したり、アイテムを販売したりできるページがあります。アイテムが売りに出されたり、売りに出されたりするたびに、最新のセールアイテムで RSS フィードを更新する関数が呼び出されます。

RSS XML 構造は次のとおりです。

<?xml version="1.0"?>
<rss version="2.0">
    <channel>
        <title>Project2 RSS Feed</title>
        <language>en-us</language>
        <link>http://people.rit.edu/~cns3946/539/project2/project2.rss</link>
        <description>Project 2 RSS Feed</description>
        <item>
            <title>Far Cry 3</title>
            <link>http://people.rit.edu/cns3946/539/project2/index.php?item_num=3</link>
            <description>
            <![CDATA[a boring description goes here....]]></description>
            <price>59.99</price>
            <salePrice>49.99</salePrice>
            <pubDate>Sun, 03 Feb 2013 01:20:04 -0500</pubDate>
        </item>
        <item>
            <title>Tales of the Abyss 3DS</title>
            <link>http://people.rit.edu/cns3946/539/project2/index.php?item_num=13</link>
            <description><![CDATA[a boring description goes here....]]></description>
            <price>39.99</price>
            <salePrice>29.99</salePrice>
            <pubDate>Sun, 03 Feb 2013 01:20:04 -0500</pubDate>
        </item>
        <item>
            <title>Resistance: Fall of Man</title>
            <link>http://people.rit.edu/cns3946/539/project2/index.php?item_num=17</link>
            <description><![CDATA[a boring description goes here....]]></description>
            <price>19.99</price>
            <salePrice>9.99</salePrice>
            <pubDate>Sun, 03 Feb 2013 01:20:04 -0500</pubDate>
        </item>
    </channel>
</rss>

関数が呼び出されるたびに、ファイルに追加されます。すべてのノードを削除してから、新しい販売アイテムをファイルに追加できるようにしたいと考えています。removeChild を使用してみましたが、わかりませんでした。この作業を行うためのヒントや指針があれば、教えていただけますか? どんな助けでも大歓迎です。

4

3 に答える 3

0

このようなものはうまくいくはずです:

$dom = new DOMDocument;
$dom->load('your_file_name.xml');
//loop thru each item node
foreach ($dom->getElementsByTagName('item') as $item) {
    //remove the item node
    $item->parentNode->removeChild($item);
}
echo $dom->saveXml();
于 2013-02-03T09:19:57.277 に答える
0
$items = $domdocument->getElementsByTagName("item");
while($items->length > 0)
    $items->item(0)->parentNode->removeChild($items->item(0));
于 2013-02-03T09:20:47.807 に答える
0

このように preg_replace を使用できますが、文字列には使用できます

$str=preg_replace("~<item(.*?)>(.*?)</item>~si",""," ".$str." ");

文字列からすべてのアイテムを削除します

于 2013-02-03T09:24:01.777 に答える