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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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