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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.12.2009, 14:21   #1  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Jackally Посмотреть сообщение
т.е. этот парсер заменил все спец. символы <, > и &. Он делает "полезную" работу, ведь наверняка есть способ выключить эту возможность...
Парсеру надо просто сформирвоать в терминах дерева DOM то, что вы хотите. Я имел ввиду просто в CDATA вставить перевод строки безо всяких кодов.

Типа http://msdn.microsoft.com/en-us/libr...tasection.aspx
X++:
static void Job3(Args _args)
{
    XMLDocument doc = XMLDocument::newXml('<test/>');
    doc.root().appendChild(doc.createCDataSection('a\r\nb'));
    doc.save(@'c:\0\1.xml');
}
В XML пробельные символы не сохраняются, так как принято, что они не важны. Если они важны используются секции CDATA
За это сообщение автора поблагодарили: Damn (2), Jackally (0), alex55 (1).
Старый 29.12.2009, 15:26   #2  
Jackally is offline
Jackally
Участник
 
20 / 14 (1) ++
Регистрация: 08.08.2006
Цитата:
Сообщение от belugin Посмотреть сообщение
Парсеру надо просто сформирвоать в терминах дерева DOM то, что вы хотите. Я имел ввиду просто в CDATA вставить перевод строки безо всяких кодов.

Типа http://msdn.microsoft.com/en-us/libr...tasection.aspx
X++:
static void Job3(Args _args)
{
    XMLDocument doc = XMLDocument::newXml('<test/>');
    doc.root().appendChild(doc.createCDataSection('a\r\nb'));
    doc.save(@'c:\0\1.xml');
}
В XML пробельные символы не сохраняются, так как принято, что они не важны. Если они важны используются секции CDATA
Спасибо, практически то что нужно )
Если я пишу текст в createCDataSection('fgsfg \n dsfsdf'); то в xml файле я получаю
'fgsfg & #13;& #10; dsfsdf' и текст наконец-таки стал разделятся на разные строки )
Единственная неприятная мелочь, так то что он настоятельно вставляет 13ый и 10ый символы вместе, даже если отпраляешь только '\n' или только '\r'.
А эксель 13ый символ не понимает и отображает квадратиком, как-то некрасиво ((
Старый 29.12.2009, 14:10   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
Можно сдалать с помощью EntityReference

X++:
static void Job1(Args _args)
{
    XMLDocument xml = new XMLDocument();
    XMLNode      node;
    XMLElement  element;
    XMLEntityReference  ref;
    ;
    ref = xml.createEntityReference("x10");
    element = xml.createElement("Element1");
    xml.appendChild(element);
    node = xml.createElement("Node1");
    element.appendChild(node);
    node.appendChild(xml.createTextNode("Строка 1" ));
    node.appendChild(ref);
    node.appendChild(xml.createTextNode("Строка 2" ));

    info(xml.toString());
}
UPD
Пардон, решетку так нельзя передать
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 29.12.2009 в 14:18.
Старый 29.12.2009, 15:47   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
какая версия аксапты? у меня получается

X++:
3c746573 743e3c21 5b434441 54415b61  # 00000000 <test><![CDATA[a
0a625d5d 3e3c2f74 6573743e           # 00000010 .b]]></test>
Старый 29.12.2009, 16:19   #5  
Jackally is offline
Jackally
Участник
 
20 / 14 (1) ++
Регистрация: 08.08.2006
Я, кажется, понял в чем фишка... у меня в XMLElement уже много чего писалось до этого, т.е. он не чистый, видимо парсер из-за этого переклинивает и он не выделяет тэгом CDATA, а сам заменяет всё что нужно спец символами, т.е. как бы тот же результат...
Теперь хоть ясно куда копать и как глубоко, спасибо )
Старый 29.12.2009, 18:21   #6  
Jackally is offline
Jackally
Участник
 
20 / 14 (1) ++
Регистрация: 08.08.2006
я ошибся, всё так и есть, в XML файле текст выделяется тэгом CDATA, проблема происходит дольше (( при открытии файла в Excel, сам ёксель его конвертит таким образом что вставляется в места перевода строк символы 13 и 10, пробывали открывать в разных Экселях, одно и то же. В местах перевода строк с помощью CDATA появляется "квадратик"... (
Старый 21.05.2010, 13:34   #7  
Lokki is offline
Lokki
Участник
 
2 / 13 (1) ++
Регистрация: 01.02.2007
X++:
static void Job17(Args _args)
{
     XMLDocument        xmlDoc = XMLDocument::newFile(@"C:\1.xml"); // Неформатированный xml
     XMLTextWriter       xmlTextWriter;
     ;

     xmlTextWriter = xmlTextWriter::newFile(@"C:\2.xml");

     xmlTextWriter.formatting(XMLFormatting::Indented);
     xmlTextWriter.indentation(0); // Число символов смещения

     xmlDoc.writeTo(xmlTextWriter);
}

Последний раз редактировалось Lokki; 21.05.2010 в 14:01.
Теги
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, время: 22:00.