SimpleXMLElement addChild在foreach中不起作用

时间:2018-11-16 08:33:39

标签: foreach simplexml addchild

代码如下:

Timer tmr = new Timer();

protected override void OnStart(string[] args)
{
    tmr.Interval = 5000;
    tmr.Elapsed += tmr_Elapsed;
    tmr.Start();
}

private void tmr_Elapsed(object sender, ElapsedEventArgs e)
{
    DBconnection.DBinsert();
}

我从一个文件中获取xml,尝试将2个子项添加到每个“ offer”标签中,然后将此xml放入另一个文件中,结果我看到了两个相同的文件。

需要帮助。

1 个答案:

答案 0 :(得分:0)

所以,我不知道它的正确性,但是代码更改也帮助解决了这个问题:

$icmlData = file_get_contents($config['icml']);

$xmlIter = new SimpleXMLElement($icmlData);

$i = 0;

foreach ($xmlIter->shop->offers->offer as $offer) {
    $id = $offer->attributes()['id'];
    $id = strval($id);

    $xmlIter->shop->offers->offer[$i]->addChild('externalId', $id);
    $xmlIter->shop->offers->offer[$i]->addChild('xmlId', $id);

    $i++;
}

$result = file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . 'icml_t.xml', $xmlIter->asXML());