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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.06.2008, 12:08   #1  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Read XML file
Помогите поменять кодировку.

Как перед начадом чтения XML файла указать ему какую кодировку использовать?

X++:
doc = new XmlDocument();
// ни знаю как но тут как то надо указать кодировку, подскажите куда копать
doc.load(sourceFileName);
Старый 16.06.2008, 13:04   #2  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,774 / 402 (17) +++++++
Регистрация: 23.03.2006
кодировка вроде-как указывается в первом теге самого файла
Старый 16.06.2008, 13:06   #3  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Не знаю как XmlDocument, но есть класс TextBuffer работающий в том числе с файлами. В качестве параметра при открытии (и при сохранении) файла указывается его кодировка. Т.е. быть может можно открыть XML файл с помощью этого класса и подсунуть его в виде текста в XmlDocument
За это сообщение автора поблагодарили: konopello (2).
Старый 16.06.2008, 13:15   #4  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
кодировка вроде-как указывается в первом теге самого файла
да спасибо, я это знаю

Цитата:
Не знаю как XmlDocument, но есть класс TextBuffer работающий в том числе с файлами. В качестве параметра при открытии (и при сохранении) файла указывается его кодировка. Т.е. быть может можно открыть XML файл с помощью этого класса и подсунуть его в виде текста в XmlDocument
ну это как вариант пока изучаю класс XmlProcessingInstruction
Старый 16.06.2008, 16:01   #5  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Всем спасибо, проблему решил
X++:
static str OEMToCharBuff(str _strSource)
{
    DLL         winApiDLL = new DLL('USER32');
    DLLFunction OEMToChar = new DLLFunction(winApiDLL, 'OemToCharA');
    Binary      bSource   = new Binary(_strSource);
    str         oemstr;
    ;

    OEMToChar.returns(ExtTypes::DWORD);
    OEMToChar.arg(ExtTypes::POINTER, ExtTypes::POINTER);
    OEMToChar.call(bSource, bSource);
    oemstr = bSource.string(0);

    return oemstr;
}
X++:
static void A000088_WorkXML(Args _args)
{
    TextBuffer                  textBuffer;

    XmlDocument                 xmlDoc;
    XMLNodeList                 tests;
    XMLNode                     node;
    XMLParseError               error;
    XmlProcessingInstruction    xmlProcessingInstruction;

    FileIOPermission    sourceFileReadPerm;

    Filename            sourceFileName = 'C:\\Tmp\\101.xml';

    #define.read('R')
    #define.write('W')
    ;

    // Assert permission to use XML save
    sourceFileReadPerm = new FileIOPermission(sourceFileName, #read);
    sourceFileReadPerm.assert();

    textBuffer = new TextBuffer();
    textBuffer.fromFile(sourceFileName);
    textBuffer.setText(WinApi::OEMToCharBuff(textBuffer.getText())); // А ВОТ И ПЕРЕВОД

    xmlDoc = new XmlDocument();

    if (!xmlDoc.loadXML(textBuffer.getText()))
    {
        error = xmlDoc.parseError();
        info("Error during load of XML: " + error.reason() + " in line " + int2str(error.line()));
        return;
    }

    tests = xmlDoc.selectNodes('//Statements');

    node = tests.nextNode();
    while (node)
    {
        info(node.selectSingleNode('Date').text());
        info(node.selectSingleNode('Account').text());
        node = tests.nextNode();
    }
}
Старый 16.06.2008, 16:38   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
вообще насколько я помню, если кодировка не указана, считается что файл обладает кодировкой UTF-8. То есть файл в кодировке OEM без указания таковой не является строго говоря XMLом
Старый 16.06.2008, 16:42   #7  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
вообще насколько я помню, если кодировка не указана, считается что файл обладает кодировкой UTF-8.
в том то и дело кодировка в заголовке файла указана, я не знал как заставить AX читать ее правильно

PHP код:
<?xml version = "1.0" encoding="CP866"?>
<?xml:stylesheet type="text/xsl" ?>
Старый 16.06.2008, 17:27   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
А какая версия? У меня вот такой скрипт работает в 4 и 5
X++:
static void Job1(Args _args)
{
;
    info(XMLDocument::newFile(@"c:\0\tes866.xml").xml());
}
Старый 17.06.2008, 09:54   #9  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
А какая версия? У меня вот такой скрипт работает в 4 и 5
AX 4.0

Я уже все перепробовал, получилось реализовать только как я описал выше. Если интересно могу скинуть файлик который необходимо читать.
Старый 17.06.2008, 10:23   #10  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
давай
Старый 17.06.2008, 10:54   #11  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
А вот и файлик 001.rar
Теги
xml, ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dax-lessons: Generate XML Documentation Files for a project - DAX 2009 Blog bot DAX Blogs 0 08.08.2008 19:06
axStart: InfoPath with default AIF file inbound offline Blog bot DAX Blogs 0 20.05.2008 19:05
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
Dave: XML File Size limitation using FindList AIF Actions Blog bot DAX Blogs 0 12.04.2007 16:10
Axapta Lessons: Export a table to a file Blog bot DAX Blogs 0 28.10.2006 18:22

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

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

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