SimpleXMLElement парсить теги с двоеточием

Делал импорт товаров для 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

 

 

Оцените статью
Добавить комментарий