AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.12.2008, 11:44   #1  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Небольшое исследование по выводу переноса в Excel-xml:

1. То, что формируется у меня - с потеряным переносом, в Екселе, понятно, в одну строку выводится:
<Cell ss:StyleID="s29"><Data ss:Type="String">test it</Data></Cell>

2. Формирую строку указанным джобом, копирую в текстовом редакторе текст, получаю строку:
<Cell ss:StyleID="s29"><Data ss:Type="String">test
it</Data></Cell>
Эта строка в текстовом редакторе переносится, но в Екселе - все равно в одну строку.

3. Открываю файл в Екселе, вставляю перенос строки прямо в ячейке, сохраняю файл, открываю в текстовом редакторе:
<Cell ss:StyleID="s30"><Data ss:Type="String">test "& # 10 ;" it</Data></Cell>

"& # 10 ;" - вставил пробелы, иначе не видно в обозревателе

Именно вот этот управляющий символ мне и нужен. В итоге (тема поднималась почти год назад пришлось делать насильную замену переносов строк в классе отчета на "определенную строку" и после формирования итогового xml-файла делать в нем замену "определенной строки" на "& # 10 ;"
__________________
Ivanhoe as is..

Последний раз редактировалось Ivanhoe; 01.12.2008 в 11:52.
Старый 01.12.2008, 12:18   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
3. Открываю файл в Екселе, вставляю перенос строки прямо в ячейке, сохраняю файл, открываю в текстовом редакторе:
<Cell ss:StyleID="s30"><Data ss:Type="String">test "& # 10 ;" it</Data></Cell>
А если передавать просто \n
Старый 01.12.2008, 12:36   #3  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
То получается символ " ".
__________________
Ivanhoe as is..
Старый 01.12.2008, 16:15   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
То получается символ " ".
чтобы сохранить white space нетронутыми, есть метод XMLdocument.preserveWhitespace

Кроме того, есть специальный класс XMLwhitespace, который является потомком xmlNode. Если уж так хочется включить проеблы в xml-структуру, то можно и так сделать.
__________________
полезное на axForum, github, vk, coub.
Старый 01.12.2008, 19:31   #5  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от mazzy Посмотреть сообщение
чтобы сохранить white space нетронутыми, есть метод XMLdocument.preserveWhitespace

Кроме того, есть специальный класс XMLwhitespace, который является потомком xmlNode. Если уж так хочется включить проеблы в xml-структуру, то можно и так сделать.
Сорри, но не понял как это мне поможет? Я не хочу пробел ) Я хочу перенос строки

P.S. XMLdocument.preserveWhitespace() попробовал и с true, и с false - одинаково "\n" выводится как " ".
__________________
Ivanhoe as is..
Старый 28.12.2009, 21:13   #6  
Jackally is offline
Jackally
Участник
 
20 / 14 (1) ++
Регистрация: 08.08.2006
У меня такая же проблема что и у Ivanhoe, для неё всё-таки нашлось решение?

Т.е. я отправляю в XMLElement или \r, или \n, все равно получаю символ в xml-документе просто пробел, как насильно вставить туда именно перевод строки? Если в ручную в Экселе вставить перевод строки, то в xml документе он запишется как "& # 10;". Пытаюсь отправить этот код в XMLElement, на выходе в документе получаю некий преобразованный код "& amp; #10;", что уже не работает как перевод строки.

Как все-таки можно вставить в XMLElement символ перевода строки?
Старый 11.01.2010, 09:39   #7  
b_nosoff is offline
b_nosoff
Читатель
Аватар для b_nosoff
MCP
MCBMSS
 
197 / 143 (5) +++++
Регистрация: 01.12.2004
Адрес: Msk
Записей в блоге: 13
Цитата:
Сообщение от Jackally Посмотреть сообщение
У меня такая же проблема что и у Ivanhoe, для неё всё-таки нашлось решение?

Т.е. я отправляю в XMLElement или \r, или \n, все равно получаю символ в xml-документе просто пробел, как насильно вставить туда именно перевод строки? Если в ручную в Экселе вставить перевод строки, то в xml документе он запишется как "& # 10;". Пытаюсь отправить этот код в XMLElement, на выходе в документе получаю некий преобразованный код "& amp; #10;", что уже не работает как перевод строки.

Понимаю, что закат солнца вручную, но если сохранять документ таким образом?

X++:
textBuffer.appendText(xMLDocument.xml());
textBuffer.replace("&amp;#10;", "& #10;");
textBuffer.toFile(filename);

Последний раз редактировалось b_nosoff; 11.01.2010 в 09:56.
Старый 01.12.2008, 12:39   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
У меня получается 10 символ:
X++:
efbbbf3c 3f786d6c 20766572 73696f6e  # 00000000 ...<?xml version
3d22312e 30222065 6e636f64 696e673d  # 00000010 ="1.0" encoding=
22757466 2d38223f 3e0d0a3c 7a65643e  # 00000020 "utf-8"?>..<zed>
74657374 0a69743c 2f7a6564 3e        # 00000030 test.it</zed>
Старый 01.12.2008, 13:54   #9  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
А у нас получается символ 0020
__________________
Ivanhoe as is..
Старый 01.12.2008, 14:11   #10  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
вы уверены? 0x20 - это пробел. Может портится при передаче серез clipboard?
Старый 01.12.2008, 15:40   #11  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Это в файле так, я копи-пастом не пользовался.
__________________
Ivanhoe as is..
Старый 28.12.2009, 21:49   #12  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Мы обошли так: в настройках указан мета-символ, который пишется в xml-файл вместо перевода строки. После сохранения файла открываем его в режиме текстового файла, подменяем мета-символ на xml-льный перевод строки и сохраняем.
__________________
Ivanhoe as is..
Старый 29.12.2009, 10:51   #13  
Jackally is offline
Jackally
Участник
 
20 / 14 (1) ++
Регистрация: 08.08.2006
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Мы обошли так: в настройках указан мета-символ, который пишется в xml-файл вместо перевода строки. После сохранения файла открываем его в режиме текстового файла, подменяем мета-символ на xml-льный перевод строки и сохраняем.
Это жестоко как-то ) я все-таки хочу попытаться вставлять в документ именно этот символ "& #10;", а xml парсер, видимо, считает что я хочу вставить это как текст в документ и преобразовывает в такой вот вид "& amp;#10;"...
Может есть способ заставить не делать его такое преобразование?

Последний раз редактировалось Jackally; 29.12.2009 в 11:32.
Старый 29.12.2009, 11:47   #14  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от Jackally Посмотреть сообщение
Это жестоко как-то ) я все-таки хочу попытаться вставлять в документ именно этот символ "& #10;", а xml парсер, видимо, считает что я хочу вставить это как текст в документ и преобразовывает в такой вот вид "& amp;#10;"...
Может есть способ заставить не делать его такое преобразование?
Хорошие программисты (разные) потратили на поиск решения в сумме несколько дней, больше копаться для нас не имело смысла. Если найдете способ - респект
__________________
Ivanhoe as is..
Старый 28.12.2009, 21:50   #15  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
попробуйте вместо '\n' использовать strfmt("%1%2", num2char(0x0D), num2char(0x0A))
Старый 29.12.2009, 10:25   #16  
Jackally is offline
Jackally
Участник
 
20 / 14 (1) ++
Регистрация: 08.08.2006
Цитата:
Сообщение от DSPIC Посмотреть сообщение
попробуйте вместо '\n' использовать strfmt("%1%2", num2char(0x0D), num2char(0x0A))
все равно не помогает, мне нужно в сформированном xml файле получить символ перевода строки "& # 10;"
Старый 29.12.2009, 11:10   #17  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
такая штука, навколько я помню, называется entity - осталось посмотреть как их вставлять в документ
Старый 29.12.2009, 11:48   #18  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от belugin Посмотреть сообщение
такая штука, навколько я помню, называется entity - осталось посмотреть как их вставлять в документ
Насколько я понимаю, в нашем случае не подходит - потому что мы говорим про текст в одной отдельной ячейке Excel, если вставить entity, то это будет не одна ячейка.
__________________
Ivanhoe as is..
Старый 29.12.2009, 12:16   #19  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
а если CDATA?

Последний раз редактировалось belugin; 29.12.2009 в 12:19.
Старый 29.12.2009, 14:02   #20  
Jackally is offline
Jackally
Участник
 
20 / 14 (1) ++
Регистрация: 08.08.2006
Пробывал в XMLElement отправлять текст такого вида:
"<![CDATA[ taram & #10; pam pam ]]>" (вставил пробел)
на выходе в XML файле получаю:
<Data ss:Type="String">&lt;![CDATA[ taram &amp;#10; pam pam ]]&gt;</Data>


т.е. этот парсер заменил все спец. символы <, > и &. Он делает "полезную" работу, ведь наверняка есть способ выключить эту возможность...

Последний раз редактировалось Jackally; 29.12.2009 в 14:08.
Теги
excel, xml, отчет, форматирование

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dax-lessons: Generate XML Documentation Files for a project - DAX 2009 Blog bot DAX Blogs 0 08.08.2008 19:06
axStart: How to use XSLT in AIF and what’s wrong with empty xml Nodes. Blog bot DAX Blogs 0 27.04.2008 18:07
Inside Dynamics AX 4.0: The XML Structure Blog bot DAX Blogs 0 04.10.2007 11:20
перевод строки - это только 0x0A?? Dymm DAX: Программирование 1 15.03.2006 10:50
перевод строки в radiobutton kitty DAX: Программирование 2 19.07.2005 12:31

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:14.