Текущее время: Вт, апр 23 2024, 14:17

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Использование iXML. Отключение преобразования непечатаемых символов.
СообщениеДобавлено: Чт, авг 25 2016, 20:59 
Начинающий
Начинающий

Зарегистрирован:
Ср, сен 06 2006, 12:16
Сообщения: 11
Откуда: Пермь
Генерирую XML в ABAPе с помощью методов iXML. В один из узлов необходимо в атрибут занести значение вида "Текст &#10 текст".
При использовании метода if_ixml_element~set_attribute, разумеется, в XMLе я получаю значение с преобразованием эскейп-символов вот в таком виде: "Текст &#10 текст".
Но мне нужно именно "&#" вместе.
Как можно это сделать?
Может быть можно как-то отключить вывод эскейп-символов?

Если что код такой:
Code:
*&---------------------------------------------------------------------*
*&  METHOD set_attribute
*&---------------------------------------------------------------------*
*   установить значение атрибута в узле по его имени
*----------------------------------------------------------------------*
*  --> im_node         ссылка на обрабатываемый узел
*  --> im_attr_name    имя атрибута
*  --> im_attr_ns      область имен атрибута
*  --> im_attr_value   устанавливаемое значение атрибута
*----------------------------------------------------------------------*
  METHOD set_attribute.
    DATA:
        lr_element        TYPE REF TO if_ixml_element
      .

    lr_element ?= im_node.

    lr_element->set_attribute( name      = im_attr_name
                               namespace = im_attr_ns
                               value     = im_attr_value ).
  ENDMETHOD.      " set_attribute


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование iXML. Отключение преобразования непечатаемых символов.
СообщениеДобавлено: Сб, авг 27 2016, 09:07 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
viewtopic.php?f=13&t=93447&view=previous


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Использование iXML. Отключение преобразования непечатаемых символов.
СообщениеДобавлено: Сб, авг 27 2016, 17:33 
Начинающий
Начинающий

Зарегистрирован:
Ср, сен 06 2006, 12:16
Сообщения: 11
Откуда: Пермь
trop написал(а):
http://sapboard.ru/forum/viewtopic.php?f=13&t=93447&view=previous

Спасибо за ответ! Но эту тему я уже видел, и там речь про трансформации. У меня же не используются трансформации - ixml позволяет парсить и менять xml с помощью соотв. методов из abap'а без xslt.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование iXML. Отключение преобразования непечатаемых символов.
СообщениеДобавлено: Сб, авг 27 2016, 23:07 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
Попробуйте формировать значение вашего аттрибута вместо
Code:
attribute = |Текст &#10 текст|.

Как
Code:
attribute = |Текст { cl_abap_char_utilities=>newline } текст|.

Т.е. на вход подавайте переменную с переводом строки (вы же этого хотите добиться?). Авось - получится.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование iXML. Отключение преобразования непечатаемых символов.
СообщениеДобавлено: Вс, авг 28 2016, 13:38 
Начинающий
Начинающий

Зарегистрирован:
Ср, сен 06 2006, 12:16
Сообщения: 11
Откуда: Пермь
Кодер написал(а):
на вход подавайте переменную с переводом строки (вы же этого хотите добиться?). Авось - получится.

Идея хорошая. В итоге результат забавный. Вот такой срендерился xml (привожу часть):
Code:
<Header x:Margin="0.3" x:Data="&amp;LСтраница &amp;P
из &amp;N"/>


Вот такой xml я пытался сделать:
Code:
<Header x:Margin="0.3" x:Data="&amp;LСтраница &amp;P &#10из &amp;N"/>


Т.е. энтер проставился физически в тексте атрибута. Несмотря на то, что перенос строки в этом атрибуте кодируется символами &#10, такой результат с физическим символом переноса строки тоже работает как мне надо.
Спасибо!

Тему решенной пока не отмечаю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование iXML. Отключение преобразования непечатаемых символов.
СообщениеДобавлено: Пн, авг 29 2016, 04:53 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
Кстати, перенос строки должен кодироваться либо &#10; (в конце точка с запятой), либо &#13;&#10; - в зависимости от платфомы для которой нужна новая строка (win\linux)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Использование iXML. Отключение преобразования непечатаемых символов.
СообщениеДобавлено: Пн, авг 29 2016, 14:10 
Начинающий
Начинающий

Зарегистрирован:
Ср, сен 06 2006, 12:16
Сообщения: 11
Откуда: Пермь
AFH написал(а):
Кстати, перенос строки должен кодироваться либо &#10; (в конце точка с запятой), либо &#13;&#10; - в зависимости от платфомы для которой нужна новая строка (win\linux)

Да, это я в курсе, спасибо. Проблема как раз в том, что не получается сгенерировать значения вида &#nn в атрибуте xml..


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование iXML. Отключение преобразования непечатаемых символов.  Тема решена
СообщениеДобавлено: Вт, авг 30 2016, 04:04 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
А вы в сторону IF_IXML_RENDERER->NO_ESCAPING не смотрели?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Использование iXML. Отключение преобразования непечатаемых символов.
СообщениеДобавлено: Вт, авг 30 2016, 09:36 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
AFH написал(а):
А вы в сторону IF_IXML_RENDERER->NO_ESCAPING не смотрели?

Только надо написать RENDERER->NO_ESCAPING( '&' ).

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование iXML. Отключение преобразования непечатаемых символов.
СообщениеДобавлено: Ср, авг 31 2016, 17:41 
Ассистент
Ассистент

Зарегистрирован:
Чт, май 17 2007, 16:31
Сообщения: 40
Откуда: Санкт-Петербург
Code:
  DATA: _streamfactory   TYPE REF TO if_ixml_stream_factory,
        _ostream         TYPE REF TO if_ixml_ostream,
        _renderer        TYPE REF TO if_ixml_renderer
      .

  _streamfactory = ixml->create_stream_factory( ).
  _ostream       = _streamfactory->create_ostream_xstring( string = XML_FILE ).
  _renderer      = ixml->create_renderer( ostream  = _ostream
                                          document = document ).

  _renderer->SET_NO_ESCAPING( '<>"&' ).
  _renderer->render( ).


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование iXML. Отключение преобразования непечатаемых символов.
СообщениеДобавлено: Чт, сен 01 2016, 18:03 
Начинающий
Начинающий

Зарегистрирован:
Ср, сен 06 2006, 12:16
Сообщения: 11
Откуда: Пермь
AFH написал(а):
А вы в сторону IF_IXML_RENDERER->NO_ESCAPING не смотрели?

Да, то что нужно! Спасибо!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB