-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 回答