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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.08.2005, 11:00   #21  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
сначала прочитать, потом изменить, потом сохранить
PHP код:
static void TEST_ruXML(Args _args)
{
    XMLDocument doc=new XMLDocument();
    ;
    doc.loadXML('<?xml version="1.0" encoding="windows-1251"?><BranchCompany/>');
    doc.documentElement().setAttribute("русский", "атрибут");
    doc.save("c:\\test.xml");
    info("ok");
}
вынесено на http://erpkb.com/Axapta/XML
Старый 25.08.2005, 11:05   #22  
st_msav is offline
st_msav
Участник
Аватар для st_msav
 
49 / 14 (1) ++
Регистрация: 24.08.2005
Адрес: Moscow City
Спасибо огромное. Такого способа я вчера не нашел. Но на будующее, буду иметь в виду.
Старый 30.08.2005, 09:45   #23  
petergunn is offline
petergunn
Участник
 
118 / 274 (10) ++++++
Регистрация: 30.08.2005
Адрес: Tyumen
Вы опять правите ? - тогда мы идем к вам (из рекламного творчества нашего TV)
Цитата:
Изначально опубликовано Андре
Ну, ваше дело. Хотя про это, кажется, написано в Best Practices и даже есть вопрос такой на экзаменах. Ну, и вообще, отнаследоваться было бы безопаснее Во-первых, может существовать стандартный функционал, написанный с расчетом на получение encoding=1251. Во-вторых, если вам понадобится xml в еще одной (третьей) кодировке - вы опять этот класс править полезете ?
Месяц назад занимался подобным вопросом, исправление косметическое внес лишь одно :

PHP код:
public static XMLDocument newBlankstr xmlprocessingInstruction 'version="1.0" encoding="iso-8859-1"')
{
    
COM                         dom         XMLDocument::XMLDOM();
    
xmlDocument                 xmlDocument xmlNode::construct(dom);
    
XMLProcessingInstruction    instruction xmlDocument.createProcessingInstruction('xml'xmlprocessingInstruction);
;
    
xmlDocument.appendChild(instruction);
    return 
xmlDocument;

теперь обхожусь без "кипячения" : нет необходимости плодить новые дочерние классы или править исходный класс.

PHP код:
XMLDocument::newBlank'version="1.0" encoding="windows-1251"' ) ; 
хотя теперь подумываю не применить ли механизм "аля" belugin
Старый 30.08.2005, 13:23   #24  
st_msav is offline
st_msav
Участник
Аватар для st_msav
 
49 / 14 (1) ++
Регистрация: 24.08.2005
Адрес: Moscow City
Re: Вы опять правите ? - тогда мы идем к вам (из рекламного творчества нашего TV)
Цитата:
Изначально опубликовано petergunn


Месяц назад занимался подобным вопросом, исправление косметическое внес лишь одно :

PHP код:
public static XMLDocument newBlankstr xmlprocessingInstruction 'version="1.0" encoding="iso-8859-1"')
{
    
COM                         dom         XMLDocument::XMLDOM();
    
xmlDocument                 xmlDocument xmlNode::construct(dom);
    
XMLProcessingInstruction    instruction xmlDocument.createProcessingInstruction('xml'xmlprocessingInstruction);
;
    
xmlDocument.appendChild(instruction);
    return 
xmlDocument;

теперь обхожусь без "кипячения" : нет необходимости плодить новые дочерние классы или править исходный класс.

PHP код:
XMLDocument::newBlank'version="1.0" encoding="windows-1251"' ) ; 
хотя теперь подумываю не применить ли механизм "аля" belugin
Это вы, видимо, Best Practice как следует почитали?! А теперь, представим, что Ваша задача локальная, и система в определенный момент будет нуждаться в обновлении. Например, нужно будет поставить HotFix, который обновит класс XMLDocument. В результате все ваши модификации в исходном классе будут утеряны и, как следствие, модификации связанные с формированием документов XML в кодировке 1251 станут не работоспособными. Думаете такое положение вещей устроит Вашего заказчика?
Старый 31.08.2005, 00:03   #25  
maximus is offline
maximus
Участник
 
153 / 10 (1) +
Регистрация: 16.03.2005
2 st_msav
При всем уважении... чего воду в ступе толочь? Вроде ответ найден - ВСЕ проблемы решаются наследованием класса и переопределением одного метода. Если кто-то думает иначе, через некоторое время оберется геморроя. Но это его право наступать на "грабли".

Буржуи они, наплевать им на локальные кодировки, поэтому, то что должно работать может и не работать. Axapta не первый проект, где такое случается. Возьмите любой опенсорсный парсер xml хотя бы..
Старый 25.01.2007, 11:08   #26  
rkorchagin is offline
rkorchagin
Участник
 
81 / 69 (3) ++++
Регистрация: 26.09.2006
Немного не по теме, но может кому пригодится. Была проблема: проверить весь XML и заменить знак 'euro' на строку "EUR" перед сохранением. Но при получении строки xmlDoc.xml() теряется информация об энкодинге! Решил это дело так:
Цитата:
...

XMLProcessingInstruction xmlPi;
str tempXmlString;
;
...
xmlPi = xmlDoc.createProcessingInstruction('xml','version="1.0" encoding="ISO-8859-1" ');
.....
тут формируется XML
.....
tempXmlString = xmlDoc.xml();
tempXmlString = strreplace(tempXmlString,'?','EUR');
xmlDoc.loadXML(tempXmlString);
xmlDoc.removeChild(xmlDoc.childNodes().nextNode());
xmlDoc.insertBefore(XMLpi,xmlDoc.childNodes().nextNode().com());
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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
Проблема с сохранением XML документа DreamCreator DAX: Программирование 3 30.11.2007 17:12
Inside Dynamics AX 4.0: The XML Structure Blog bot DAX Blogs 0 04.10.2007 11:20
проблема с аксаптным XML demcn DAX: Программирование 1 19.05.2004 07:18
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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