Вставить тег в XML (simplexml)
Необходимо вставить новый тег со статичным значением в XML:
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="2020-02-17 16:45">
<shop>
<offers>
<offer id="2164" available="true" >
<url>https://</url>
<price>779</price>
<currencyId>RUR</currencyId>
</offer>
<offer id="2165" available="true" >
<url>https://2</url>
<price>780</price>
<currencyId>RUR</currencyId>
</offer>
</offers>
</shop>
</yml_catalog>
Надо добавить статичное:
<delivery-options>
<option cost="300" days="4" order-before="18"/>
</delivery-options>
Делаю
$xml = simplexml_load_file('https://URI');
foreach ($xml->shop->offers->offer as $offer) {
$name = $offer->name;
$details = $offer->addChild('delivery-options');
}
Тег добавляется как: <delivery-options/>
Не пойму почему он не парный тег, и как в него добавить <option cost="300" days="4" order-before="18"/>
Возможно ли как-то вставить простой строкой? Или как-то ещё?
Ответы (2 шт):
Автор решения: theblackpost
→ Ссылка
В общем, вот так
foreach ($xml->shop->offers->offer as $offer) {
$name = $offer->name;
$details = $offer->addChild('delivery-options',' ');
$details_option = $details->addChild('option');
$details_option->addAttribute('cost', '300');
$details_option->addAttribute('days', '4');
}
echo $xml->asXML();
Автор решения: девочка с глазами ребёнка
→ Ссылка
foreach ($xml->shop->offers->offer as $offer)
{
$details = $offer->addChild('delivery-options');
$details->addChild('option');
foreach ($details->option as $child) {
$child->addAttribute('cost', 300);
$child->addAttribute('days', 4);
$child->addAttribute('order-before', 18);
}
}