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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.08.2007, 18:53   #1  
alizee is offline
alizee
Участник
 
2 / 10 (1) +
Регистрация: 19.10.2007
Доброго времени суток.
Я столкнулась со следующей проблемой, импортируя xml файл. В моем xml-файле содержатся теги вида <my:name> и т.п. Когда я импортирую файл, выскакивает сообщение вида "The XML Parser return the following fatal error: Undeclared prefix. Line=4, Colomn number=12". А на этом месте у меня как раз стоит двоеточие. Приведу код, с помощью которого хочу произвести импортирование:

ImpotrFile.OPEN('D:\Form1.xml');
ImportFile.CREATEINSTREAM(incomeStream);

xmlvalue.SETSOURCE(incomeStream);
xmlvalue.IMPORT;

ImportFile.CLOSE;

P.S. Для XML файла, не содержащего в тегах двоеточия, импорт производится без проблем.

Может, кто-нибудь сталкивался с похожей ситуацией. Помогите советом.
Спасибо.
Старый 03.08.2007, 20:14   #2  
alizee is offline
alizee
Участник
 
2 / 10 (1) +
Регистрация: 19.10.2007
Могу предложить одно из решений, которое, возможно, не является оптимальным: удалять двоеточия. Это можно сделать, создав временный файл, в который записывать OutStream уже без двоеточий, а потом из этого же времменого файла читать InStream и импортировать уже его. Приведу пример, как это может выглядеть:

inportFile.OPEN(bla-bla-bla);
inportFile.CREATEINSTREAM(incomeStream);

tmpfile.CREATETEMPFILE;
tmpfile.CREATEOUTSTREAM(outcomeStream);

{Логика может быть любой. Я читала InStream по одному символу, и записывала в OutStream все данные, кроме двоеточий. Для моего файла такой вариант хорошо подошел. Можно удалять двоеточия непосредственно в теге, чтобы не портить другое данные. Идея понятна.}

WHILE NOT (incomeStream.EOS()) DO
BEGIN
incomeStream.READTEXT(str, 1);
IF (str = ':') THEN
incomeStream.READTEXT(str, 1);

outcomeStream.WRITETEXT(str);
END;

tmpfile.CREATEINSTREAM(correctStream);

xmlvalue.SETSOURCE(correctStream);
xmlvalue.IMPORT;

tmpfile.CLOSE;
inportFile.CLOSE;
 


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

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

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