 |
|
Перенос значении в xml с помощью php
Помогите пожалуйста.
Как можно в xml файле сделать следующее с помощью php (или на другом языке):
В исходнике такие данные:
HTML код:
<categories>
<category id="0001">Категория1</category>
<category id="0002">Категория2</category>
<category id="0003" parentId="0001">Подкатегория1_Категорий1</category>
<category id="0004" parentId="0002">Подкатегория2_Категорий2</category>
...
</categories>
<offers>
<offer id="114400" available="true">
...
<categoryId>0001</categoryId>
...
</offer>
<offers>
<offer id="114401" available="true">
...
<categoryId>0004</categoryId>
...
</offer>
...
</offers>
А хотелось бы, чтобы было так:
HTML код:
<offers>
<offer id="114400" available="true">
...
<categoryId>Категория1</categoryId> // вместо <categoryId>0001</categoryId>
...
</offer>
<offer id="114401" available="true">
...
<categoryId>Категория2</categoryId> /// вместо <categoryId>0004</categoryId>, значение берет из parentId="0002", т.к. он является родителем
<parentId>Подкатегория2_Категорий2</parentId> // Добавить <parentId>, т.к. имеется в <category id="0004" parentId="0002"> и добавить значение
...
</offer>
...
</offers>
Т.е. хотелось, чтобы значения категории находились внутри offers
Спасибо.
|
daradan, какой бы нибудь чуть более "развесистый файлик" для подумать.
Сходу решение не напишу, но подумаю.
|
Вложений: 1
Цитата:
Цитата lxa85
какой бы нибудь чуть более "развесистый файлик" для подумать. »
|
Спасибо. Загрузил примерный файл для понимания. Внутри в комментариях указал более подробно.
Пока для себя временным решением сделал так:
PHP код:
<?php $xmlStr = file_get_contents('source.xml'); $patterns = array(); $patterns[0] = '~<categoryId>1093</categoryId>~'; $patterns[1] = '~<categoryId>1097</categoryId>~'; $patterns[2] = '~<categoryId>1103</categoryId>~'; $patterns[3] = '~<categoryId>1095</categoryId>~'; $patterns[4] = '~<categoryId>1096</categoryId>~'; $patterns[5] = '~<categoryId>1090</categoryId>~'; $patterns[6] = '~<categoryId>1098</categoryId>~'; $patterns[7] = '~<categoryId>1099</categoryId>~'; $replacements = array(); $replacements[0] = "<categoryId>Машинки</categoryId>"; $replacements[1] = "<categoryId>Коляски</categoryId>"; $replacements[2] = "<categoryId>Коляски</categoryId>\n <subcategoryId>Для прогулки</subcategoryId>"; $replacements[3] = "<categoryId>Коляски</categoryId>\n <subcategoryId>3 в одном</subcategoryId>"; $replacements[4] = "<categoryId>Конструкторы</categoryId>"; $replacements[5] = "<categoryId>Конструкторы</categoryId>\n <subcategoryId>LEGO</subcategoryId>"; $replacements[6] = "<categoryId>Конструкторы</categoryId>\n <subcategoryId>LEGO</subcategoryId>\n <subsubcategoryId>DUPLO</subsubcategoryId>"; $replacements[7] = "<categoryId>Конструкторы</categoryId>\n <subcategoryId>LEGO</subcategoryId>\n <subsubcategoryId>City</subsubcategoryId>"; $str = preg_replace($patterns, $replacements, $xmlStr); file_put_contents('result.xml', $str, LOCK_EX); ?>
и т.д.
Но там примерно 300 строк, каждую уже вручную сделал, но хотелось бы автоматизировать процесс и более грамотно все организовать, чтобы минимизировать человеческий фактор...
|
Мне вообще сложно работать с php, поэтому по нему не могу ничего путевого подсказать, а вот на Питоне другое дело. Смотри, есть ветка кодеров, где рассматривается вопрос обработки XML в Python https://myht.ru/question/337-obrabotka-xml-v-python Покури её, как говорится, войдешь быстро в курс дела. Если что будет не понятно, то пиши, я подскажу. С php не дружу, а вот по Питону подскажу, что хочешь. В меру своих скромных познаний, конечно.
|
Время: 13:29.
© OSzone.net 2001-