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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.09.2013, 16:33   #1  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Byte order mark в XML Аксапты
Добрый день!

Есть такой вопрос. При обработке файла XML стороннего приложения в кодировке UTF-8 присутсвует модификатор Byte order mark(BOM),

При обработке файла встроенными классами (XMLDocument) получаю следующую ошибку: "Недопустимые данные на корневом уровне. Строка 1, позиция 1."

Имеются ли какие-либо встроенные решения для работы с файлами UTF-8 с данным модификатором?

DAX 2009.

Спасибо!
Старый 26.09.2013, 16:57   #2  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
2009-й под рукой нет. Попробовал в 2012 загрузить файл с BOM так:

XMLDocument doc = SysImportExportHelper::importXMLFromFile(<filename>)

Все нормально, не ругается.
Старый 26.09.2013, 17:32   #3  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от greench Посмотреть сообщение
2009-й под рукой нет. Попробовал в 2012 загрузить файл с BOM так:

XMLDocument doc = SysImportExportHelper::importXMLFromFile(<filename>)

Все нормально, не ругается.
Пробовал считать указанным классом, получил ошибку: "Не удалось открыть файл File.xml. Файл не является допустимым файлом XML."

Прикрепляю файл XML для тестов. Удалите txt в расширении, так как xml-файлы не атачатся.
Вложения
Тип файла: txt File.xml.txt (2.8 Кб, 673 просмотров)
Старый 26.09.2013, 17:43   #4  
handy-comp is offline
handy-comp
Участник
 
96 / 78 (3) ++++
Регистрация: 27.09.2012
Этот файл некорректный, до декларации XML присоветует символ, но это не BOM
Старый 26.09.2013, 17:48   #5  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от handy-comp Посмотреть сообщение
Этот файл некорректный, до декларации XML присоветует символ, но это не BOM
Однако я сконвертировал этот файлик через Notepad++ с помощью опции Encoding/Encode in UTF-8 without BOM и файл отработал корректно.

Также при сохранении данного файла в кодировке AnsII в первой строке первым символом стоял знак вопроса.
Старый 26.09.2013, 17:59   #6  
handy-comp is offline
handy-comp
Участник
 
96 / 78 (3) ++++
Регистрация: 27.09.2012
Цитата:
Сообщение от Cardagant Посмотреть сообщение
Однако я сконвертировал этот файлик через Notepad++ с помощью опции Encoding/Encode in UTF-8 without BOM и файл отработал корректно.

Также при сохранении данного файла в кодировке AnsII в первой строке первым символом стоял знак вопроса.
Именно, в Notepad++ с помощью плагина HEX-Editor гляньте, у вас там два ВОМ а подряд идет ef bb bf ef bb bf, а должно быть только ef bb bf
За это сообщение автора поблагодарили: gl00mie (2), Cardagant (1).
Старый 26.09.2013, 23:33   #7  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Благодарю за Ваши ответы!
Старый 02.10.2013, 15:16   #8  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Да, в файле получаю двойной BOM, считывая его через Аксапту. При этом получение данного файла другими средствами не вызывает описанной выше ошибки.
Не знаю пока в каком направлении продолжать поиск, поэтому хочу спросить: может ли Аксапта для некоторых своих нужд конвертировать XML-файлы, а именно их BOM'ы. И какова вероятность того, что корни проблемы именно в Аксапте?

Спасибо!
Старый 03.10.2013, 23:17   #9  
handy-comp is offline
handy-comp
Участник
 
96 / 78 (3) ++++
Регистрация: 27.09.2012
Аксапта здесь вообще не причем.
Строго говоря это не XML, а лишь напоминает его, IE его так же не откроет.
Т.е. либо файл кривой, сделан какой то не сильно прямой программой, либо это сделано намеренно, но зачем не знаю, может это шифровка Юстасу
Если договориться с автором этой сторонней программы возможности нет, подчищайте за ней сами, открывайте этот файл в Аксапте как текст, откидывайте лишние байты, а тем что останется инициализируйте XMLDocument.
За это сообщение автора поблагодарили: Cardagant (1).
Старый 04.10.2013, 14:51   #10  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от handy-comp Посмотреть сообщение
Аксапта здесь вообще не причем.
Строго говоря это не XML, а лишь напоминает его, IE его так же не откроет.
Т.е. либо файл кривой, сделан какой то не сильно прямой программой, либо это сделано намеренно, но зачем не знаю, может это шифровка Юстасу
Если договориться с автором этой сторонней программы возможности нет, подчищайте за ней сами, открывайте этот файл в Аксапте как текст, откидывайте лишние байты, а тем что останется инициализируйте XMLDocument.
Спасибо за Ваше мнение!

Автор утверждает, что ошибка у него не воспроизводится.
Возможна ли данная ситуация из-за того, что скрипт автора, который формирует исходный XML-файл имеет кодировку UTF-16 или UTF-32 и по этой причине задваивает метку BOM?
Старый 04.10.2013, 17:11   #11  
handy-comp is offline
handy-comp
Участник
 
96 / 78 (3) ++++
Регистрация: 27.09.2012
Цитата:
Сообщение от Cardagant Посмотреть сообщение
Возможна ли данная ситуация из-за того, что скрипт автора, который формирует исходный XML-файл имеет кодировку UTF-16 или UTF-32 и по этой причине задваивает метку BOM?
Нет, невозможно, автору вышлите ссылку на википедию про BOM http://ru.wikipedia.org/wiki/Byte_order_mark и скриншот окна HEX редактора где открыт этот файл.
За это сообщение автора поблагодарили: Cardagant (1).
Старый 08.10.2013, 17:42   #12  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от handy-comp Посмотреть сообщение
Нет, невозможно, автору вышлите ссылку на википедию про BOM http://ru.wikipedia.org/wiki/Byte_order_mark и скриншот окна HEX редактора где открыт этот файл.
Благодарю, так и сделал, жду ответа от автора.
Теги
xml, кодировка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
позволяют ли стандартные классы Аксапты проводить валидацию XML? (XMLTextReader, XMLSchema и т п) Cardagant DAX: Программирование 1 15.03.2013 00:24
Generating Sales order confirmation in XML file in AX 2012 Blog bot DAX Blogs 0 01.12.2012 05:25
dynamicsaxtraining: Vendor returns Blog bot DAX Blogs 0 11.10.2012 00:11
dynamicsaxtraining: Purchase Blog bot DAX Blogs 0 11.03.2012 05:25
dynamicsaxtraining: Create purchase order Blog bot DAX Blogs 0 14.12.2009 14:05

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

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

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