Mr_Max ты предлагаешь эскпортировать только ссылку на картнку... а при импорте уже на другом сайте и сервере уже запрашивать эти картинки и подгружать в движок ?
Если да, то мне не хотелось бы так делать... удобнее было бы не зависеть от сайта-импортера, после самого процесса экспорта (перевода объекта и всех его данных в xml).
-~{}~ 23.09.07 23:35:
Упс, чего-то я сглупил... про base64_encode забыл. Проблема вроде бы решена.
---------------------------------------------------------------------------------------------------------------------------
Появился другой вопрос, позвольте не создавать мне еще один лишний топик, с просить прямо здесь.
Мое непонимание заключается в сложности и неудобности с моей точки зрения парсинга xml с помощью
DomDocument
http://www.php.net/manual/en/ref.dom.php
xml_parse и
simplexml вроде бы не особо удобней.
ниже я приведу пример ужасного кода, который у меня получился... (в данном примере конечно можно было бы обойтись рекурсивной функций назначением аля xml2array, но ведь будут ситуации более сложные и каждый раз перегонять в массивне очень НЕ хорошо т.к. модель dom и xpath удобные все же средства, хотя до меня не доходит как ими красиво пользоваться) вопрос зхаключается в том, "как компактнее и удобнее парсить?"
ЗЫ. Прошу не направлять меня на интернет магазины с книжками, ибо для этого я бы не создавал этого вопроса, а посетил бы соседние топики.
А вот электронная мукулатура не повредила бы =)
из этой xml-ки пытаюсь вытаскивать:
PHP:
<objects>
<item>
<model>Project</model>
<columns>
<id>3</id>
<title>Project title</title>
<url>asdbrakadabra.ru</url>
<description></description>
<pics_screens>
<pic>
<description></description>
<data>base64_encode data here</data>
</pic>
<pic>
<description></description>
<data>base64_encode data here</data>
</pic>
<pic>
<description></description>
<data>base64_encode data here</data>
</pic>
</pics_screens>
</columns>
</item>
</objects>
получить хочу такой массив:
PHP:
Array
(
[model] => Project
[columns] => Array
(
[id] => 3
[title] => Project title
[url] => asdbrakadabra.ru
[description] =>
)
[pics] => Array
(
[0] => Array
(
[description] =>
[data] => base64_encode data here
)
[1] => Array
(
[description] =>
[data] => base64_encode data here
)
[2] => Array
(
[description] =>
[data] => base64_encode data here
)
)
)
для этого я меня получился такой громадный парсер:
PHP:
$this->dom->load($filename);
$xpath = new DOMXPath($this->dom);
$items = $xpath->query('//objects/item/');
foreach ($items as $key => $value)
{
$obj = array();
foreach ($value->childNodes as $key2 => $value2)
{
if (isset($value2->tagName))
{
switch ($value2->tagName)
{
case 'model': $obj['model'] = $value2->textContent; break;
case 'columns':
foreach ($value2->childNodes as $key3 => $value3)
{
if (!isset($obj['columns']))
$obj['columns'] = array();
if (!isset($value3->tagName))
continue;
if (preg_match('~^pics_~si', $value3->tagName))
{
foreach ($value3->childNodes as $key4 => $value4)
{
if (!isset($value4->tagName))
continue;
$pic = array();
foreach ($value4->childNodes as $key5 => $value5)
{
if (!isset($value5->tagName))
continue;
switch ($value5->tagName)
{
case 'description': $pic['description'] = $value5->textContent; break;
case 'data': $pic['data'] = $value5->textContent; break;
}
}
if (count($pic))
$obj['pics'][] = $pic;
}
}
else
$obj['columns'][$value3->tagName] = $value3->textContent;
}
break;
}
}
}
print_r($obj);
}