Делал импорт товаров для OpenCart с XML-файла и попался файл где теги имеют двоеточие, например
<g:id>27</g:id> <g:price>3140 UAH</g:price> <g:description>Текст описания</g:description> <g:brand>DEFFI</g:brand> <g:condition>new</g:condition>
все бы ничего, но если раньше можно было получить данные с тега по его имени, то теперь так не получится
Например:
тело файла
<?xml version="1.0" encoding="UTF-8" standalone="yes"> <price>3140 UAH</price>
PHP код
$xml = new SimpleXMLElement($xmlstr); echo $xml->price; // а если тег <g:price> то такой вариант не прокатит $xml->g:price
Решение для чтения тега с двоеточием
как оказалось решение по доступу в тегу было в самом файле XML
Часть код файла XML
<?xml version="1.0"?> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0"> <title></title> <link>https://my-site.com/</link> <updated>2024-07-02 00:00</updated><entry> <g:title>Полотенцесушитель водяной</g:title> <g:link>https://my-site.com/rushnykosusharka/</g:link> <g:id>27</g:id> <g:price>3140 UAH</g:price>
в данном случае, в теге feed указано
xmlns:g=»http://base.google.com/ns/1.0″
Исходя из этого, получаем
$xml = new SimpleXMLElement($xmlstr);
$item = $xml->children('http://base.google.com/ns/1.0');
echo $item->id; // он же g:id
echo $item->price; //он же g:price


