Я предоставил XML-файл с этой структурой:Restructure XML в PHP
<items>
<item>
<images>
<image>A</image>
<image>B</image>
<image>C</image>
</images>
.
.
.
</item>
</items>
Однако функция импорта моего магазина требуется следующий формат:
<items>
<item>
<images>
<image>A</image>
<image1>B</image>
<image2>C</image>
</images>
.
.
.
</item>
</items>
Сначала я думал, что я сделал бы это просто на Java, так как было бы довольно легко читать по строкам и реструктурировать документ, но я бы хотел, чтобы он был таким, чтобы я мог просто посетить URL-адрес, и это сделано для меня.
Вот подход, который я взял:
<?php
$xml = simplexml_load_file('data.xml');
// Loop over items in original xml
for($i = 0; $i < count($xml->item); $i++)
{
$images;
if(($c = count($xml->item[$i]->images->image)) > 1)
{
$images = $xml->item[$i]->images;
// Remove entry
unset($xml->item[$i]->images);
$xml->item[$i]->addChild('images');
for($y = 0; $y < count($images->image); $y++)
{
if($y == 0)
{
$xx = $xml->item[$i]->images->addChild('image', $images->image[$y]);
}else {
$xml->item[$i]->images->addChild('image' . $y, $images->image[$y]);
}
}
var_dump($images);
}
}
$xml->asXML('POTO.xml');
Дилемма я Тхо, что ни один из Чайлдс не добавляются к изображениям. Мне сказали, что мне нужно реструктурировать весь документ, но это глупо, если я var_dump
сразу после удаления узла изображений узел и его дочерние элементы удалены, однако, когда я иду добавить узел изображений обратно к узлу узла и var_dump
, узел показывает, что узел был добавлен в узел узла в качестве дочернего элемента, но когда я пытаюсь добавить изображение к изображениям, ничего не добавляется.
Нужно ли мне реструктурировать весь документ, потому что тогда кажется более простым сделать это на Java. Или я что-то упустил.
2 цента: посмотрите [PHP: XSL] (http://www.php.net/manual/ro/book.xsl.php). –
Каково значение 'count ($ xml-> item)' и 'count ($ images-> image)'? Выполнены ли ваши тела петли? –
@GeorgeCummins Синтаксис count выглядел мне смешно, но, похоже, он действителен. Похоже, что PHP 5.3 поддерживал метод объекта 'SimpleXMLElement :: count()', но с использованием основного 'count()' был фактически стандартным до этого. Кто знал? Ссылка: http://us3.php.net/manual/en/simplexmlelement.count.php – eimajenthat