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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.02.2008, 16:42   #1  
Asterisk is offline
Asterisk
Участник
 
36 / 16 (1) ++
Регистрация: 24.10.2005
Адрес: Москва
Особенно пристально обратить внимание на метод

protected XMLElement appendXMLElement(XMLElement _toXmlElement, str _elementName, str _elementValue)
{
XMLElement xmlElement;
XMLText xmlText;
;

xmlElement = xmlDoc.createElement(_elementName);
xmlText = xmlDoc.createTextNode(_elementValue);
xmlElement.appendChild(xmlText);

_toXmlElement.appendChild(xmlElement);
_toXmlElement.appendChild(xmlDoc.createTextNode(#delimiterEnter));

return xmlElement;
}

где
#define.delimiterEnter('\n')

- видимо как раз то что нужно Ivanhoe
Старый 29.11.2008, 17:06   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Asterisk Посмотреть сообщение
_toXmlElement.appendChild(xmlDoc.createTextNode(#delimiterEnter));
Какой-то закат солнца вручную.

А можно что-нибудь замутить с xmlNode.prefix, xmlNode.InserAfter, xmlDoc.createSignificantWhitespace, xmlDoc.preserveWhitespace?
примеров кода не могу найти.
__________________
полезное на axForum, github, vk, coub.
Старый 29.11.2008, 17:50   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Asterisk Посмотреть сообщение
_toXmlElement.appendChild(xmlDoc.createTextNode(#delimiterEnter));
Угу. Пока не понял до конца.
Но использовать XMLelement и XMLdocument для форматирования вывода - закат солнца вручную.
xmlDocument, xmlNode, xmlElement - это для хранения разобранного XML в памяти (!) и для работы с ним.

Для вывода нужно пользоваться классом xmlWriter, который просто выводит в планарный неразобранный текст. См. перекрестные ссылки, чтобы посмотреть пример использования.

Ну и про экранирование спец.символов - ура! - оно экранирует.
Для записи спецсимволов используется слэш-нотация '\n', '\r', '\t' и т.д.
__________________
полезное на axForum, github, vk, coub.
Старый 29.11.2008, 18:16   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Разобрался.
Можно и xmlDocument выводить.

Выложу пример кода, чтобы потом самому не вспоминать
X++:
static void Job1(Args _args)
{
    XmlDocument doc = XmlDocument::newBlank();
    XmlElement  root;
    XmlElement  channel;

    XMLWriterSettings xmlWriterSettings = new XMLwriterSettings();
    XMLWriter   xml;

    root = doc.appendChild(doc.createElement("rss"));
    root.setAttribute("version","2.0");

    channel = root.appendChild(doc.createElement("channel"));
    channel.appendChild(doc.createElement("title")).innerText("Text for title");
    channel.appendChild(doc.createElement("description")).innerText("Text for description");
    channel.appendChild(doc.createElement("link")).innerText("http://mySuperLink");

    xmlWriterSettings.indent(true);
    //xmlWriterSettings.indentChars('  '); // можно и не указывать
    xml = XMLwriter::newXml(xmlWriterSettings);

    doc.writeTo(xml);
    xml.flush();

    info(xml.writeToString());
}
получится вот такое
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 775
Размер:	43.7 Кб
ID:	4003

Но вообще говоря, xmlDocument - это избыточно, если нужно всего-лишь вывести генерируемый на лету xml.
Если xml только выводится, то вполне достаточно следующего кода
X++:
xml.writeStartDocument();
xml.writeStartElement("rss");
xml.writeAttributeString("version","2.0");
   xml.writeStartElement("channel");
   ...
   xml.writeEndElement();
xml.writeEndElement();
xml.writeEndDocument();

Во writerSettings можно задавать и символы перевода строки, и строку для отступов и т.п.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: Maxim Gorbunov (3), alex55 (1).
Старый 29.11.2008, 19:03   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Спасибо, добрый человек, _scorp_, что послал к источнику знаний - MSDN

в общем, в Аксапте реализована обертка к .net классу System.Xml.XmlWriter
Документация здесь http://msdn.microsoft.com/ru-ru/libr...xmlwriter.aspx
краткое описание http://msdn.microsoft.com/ru-ru/library/4d1k42hb.aspx

документация на system.xml.xmlwritersettings
http://msdn.microsoft.com/ru-ru/libr...rsettings.aspx

документация на system.xml.xmldocument
http://msdn.microsoft.com/ru-ru/libr...ldocument.aspx

документация на System.Xml.XmlNode
http://msdn.microsoft.com/ru-ru/libr...l.xmlnode.aspx

Ну, и так далее...

Кроме того, интересное описание реализации похожей штуки http://ru2.php.net/manual/ru/book.xmlwriter.php

В общем, не надо выполнять "закат солнца вручную".
Надо просто доку поискать.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: Asterisk (1).
Теги
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, время: 07:25.