Как передать XML группы инфосистемы в инфоэлемент другой инфосистемы?

#
Как передать XML группы инфосистемы в инфоэлемент другой инфосистемы?
Вношу изменения в ТДС отображения инфосистемы, пытаюсь передать XML, полученный с помощью GenXmlForGroup, через external_propertys:


$external_propertys['my_xml'] = $InformationSystemAdd->GenXmlForGroup($information_system_id_add, $group_info_add, $property_add);
$GLOBALS['LA_InformationSystem']->ShowInformationSystemItem($item_id, $xsl_item, $external_propertys, $property);


Таким способом передается то, что нужно, но не в виде XML, а в виде строки с экранированными спецсимволами —
<count_all_items>13</count_all_items>
и т.п.

А как передать именно XML?
http://superweb.pro/ — сайты на HostCMS под ключ
#
Re: Как передать XML группы инфосистемы в инфоэлемент другой инфосистемы?
Нашла. $property['external_xml']
Только это оказывается не то... мне не столько нужны свойства самой группы (желательны конечно, но не необходимы), сколько XML для всех элементов этой группы. Нашла метод GetExternalInformationSystemItem. Он возвращает ассоциативный массив. Есть в HostCMS готовый класс для преобразования массива в XML? Причем, поскольку $property['external_xml'] просто подставляет весь блок XML в начало документа, хотелось бы еще обернуть XML в свой тэг, чтобы оно не перепутывалось с основным XML инфоэлемента. Есть такое готовое? Или свои костыли прикручивать?
http://superweb.pro/ — сайты на HostCMS под ключ
#
Re: Как передать XML группы инфосистемы в инфоэлемент другой инфосистемы?
Тишина... Неужели трудно ответить? Если нет метода, позволяющего получить XML для всех элементов одной группы — так и напишите. У вас конечно прекрасный API, но не всегда нестандартные задачи удается решить с его помощью.
Вообще, странное ограничение. У которого, похоже, ноги растут оттуда же, откуда и у доп. свойства «Информационная система». Элемент к элементу привязать можно, группу к элементу — нельзя...
http://superweb.pro/ — сайты на HostCMS под ключ
#
Re: Как передать XML группы инфосистемы в инфоэлемент другой инфосистемы?
dogstudio писал(а):
сколько XML для всех элементов этой группы

dogstudio,вам нужен сначала метод GetInformationItemsFromGroup() для выбора всех элементов группы, а потом, в цикле этого метода используйте GetXmlForInformationItem() для получения XML каждого элемента.
Обратите внимание, что данный метод не включает в XML информацию о доп.свойствах элементов.

dogstudio писал(а):
Неужели трудно ответить?
Не трудно, но я редко бываю в последнее время на форуме - некогда
Заказов не беру. Консультирую редко.
#
Re: Как передать XML группы инфосистемы в инфоэлемент другой инфосистемы?
Kotoff писал(а):
Обратите внимание, что данный метод не включает в XML информацию о доп.свойствах элементов.


Мне нужно обязательно с допсвойствами. Что делать в этом случае?

Кроме того, нужна обертка для полученного XML, иначе ведь элементы привязанной группы будут просто списком в корне — на том же уровне, что и основной элемент, как их различать-то тогда?
http://superweb.pro/ — сайты на HostCMS под ключ
#
Re: Как передать XML группы инфосистемы в инфоэлемент другой инфосистемы?
Kotoff писал(а):
Обратите внимание, что данный метод не включает в XML информацию о доп.свойствах элементов.
Наврал. Включает, у метода есть параметр
$property['xml_show_item_property'] = true;
который как раз включает передачу информации о доп.свойствах в xml.

dogstudio писал(а):
Кроме того, нужна обертка для полученного XML
Ну так и оберните его сами во что угодно! В чем проблема?
Примерно так:
$InformationSystem = &singleton('InformationSystem');

$information_groups_id = 2;
$information_systems_id = 1;


// Сортируем элементы по убыванию порядкового номера - это из примера в API, можете удалить

$a_param = array();
$a_param['OrderField'] = 'information_items_order';
$a_param['Order'] = 'DESC';

$resource = $InformationSystem->GetInformationItemsFromGroup($information_groups_id,
    $information_systems_id, $a_param);

$myxml = '<my_items>';

if ($resource) {
    while ($row = mysql_fetch_assoc($resource)) {

        $b_param = array();
        $b_param['xml_show_item_property'] = true;        
        
        $myxml .= $InformationSystem->GetXmlForInformationItem($row['information_items_id'], $b_param);

    }
}

$myxml .= '</my_items>';


$property['external_xml'] = $myxml;

И в xsl-шаблоне обращаемся к элементам по адресу /document/my_items/item или my_items/item,в зависимости от контекста.
Заказов не беру. Консультирую редко.
#
Re: Как передать XML группы инфосистемы в инфоэлемент другой инфосистемы?
Спасибо! Попробую
http://superweb.pro/ — сайты на HostCMS под ключ
#
Re: Как передать XML группы инфосистемы в инфоэлемент другой инфосистемы?
Пожалуйста, удачи!
Заказов не беру. Консультирую редко.
Авторизация