Re: FW: Чтение значения из XML

От: Vladimir A. Butenko <CGatePro_at_mx_ru>
Дата: Sun 20 Apr 2008 - 21:44:02 MSD

On Sun, 20 Apr 2008 19:46:56 +0400
  "Dmitry Akindinov" <CGatePro@mx.ru> wrote:
> Здравствуйте,
>
> Михаил К. Епихин wrote:

>> Это работает, спасибо.
>> Как быть, если структура XML сложнее, например:
>> <?xml version="1.0" encoding="utf-8" ?> 
>> - <PhoneIdentity xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="CGPNameSpace">
>>   <Phone>4732206000</Phone> 
>>   <Identity>Протек [42] - Воронеж</Identity> 
>>   </PhoneIdentity>
>> Исходя из документации я пытаюсь использовать функцию XMLBody, но она 
>>всегда
>> возвращает null.

>
> Она возвращает объект типа XML - который надо еще привести к типу String:
>
> syslog("XML(number): " + String(XMLBody(obj,null,null,0)));
> syslog("XML(identity): " + String(XMLBody(obj,null,null,1)));

Это, возможно, проще понять в "новом" синтаксисе:

phone = obj.xmlBody("Phone",null,0) - вытащит XML-элемент <Phone>4732206000</Phone>
а phone.string() - вытащит его string-содержимое - "4732206000"

Можно сделать свою фунцию elemString:
function ElemString(x,key) is

   return(x.xmlBody(key,null,0).string()); end function;

тогда
  obj.elemString("Phone") - вернёт "4732206000" а
  obj.elemString("Identity") - вернёт "Протек [42] - Воронеж"

>

>> Спасибо.
>> 
>> -----Original Message-----
>> From: CommuniGate Pro Russian Discussions [mailto:CGatePro@mx.ru] 
>> Sent: Friday, April 18, 2008 5:21 PM
>> To: CommuniGate Pro Russian Discussions
>> Subject: Re: [CGP] FW: Чтение значения из XML
>> 
>> Здравствуйте,
>> 
>> Михаил К. Епихин wrote:
>>> Добрый день.
>>>
>>> Пожалуйста, помогите разобраться.
>>> Приложение вызывает HTTPCall, в ответе body - XML, при помощи
>>> TextRes=TextToObject(HTTPRes.("body")) получаем объект XML - IsXML говорит
>> о
>>> нем True (текст XML: <?xml version=\"1.0\"?><string
>>> xmlns=\"CGPNameSpace\">g1</string>"). Как получить из него собственно
>>> значение (в примере "g1")? 
>> 
>> Если объект состоит из всего лишь из <string>...</string>, то для 
>> извлечения этой строки достаточно String(TextRes).
>> 

>
> --
> Best regards,
> Dmitry Akindinov -- Stalker Labs.
>
>
> ##################################################################
> Вы получили это сообщение потому, что подписаны на список рассылки
> <CGatePro@mx.ru>.
>
> Чтобы отписаться, отправьте сообщение на адрес <CGatePro-off@mx.ru>
> Чтобы переключиться в режим дайджеста - mailto:<CGatePro-digest@mx.ru>
> Чтобы переключиться в индексный режим - mailto:<CGatePro-index@mx.ru>
> Для административных запросов адрес <CGatePro-request@mx.ru>
> Архив списка: http://mx.demos.su/lists/cgp-russian/
>
>
>

Sincerely,
Vladimir Получено Sun Apr 20 17:43:17 2008

Этот архив был сгенерирован hypermail 2.1.8 : Mon 21 Apr 2008 - 00:15:21 MSD