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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.04.2008, 13:46   #1  
Иван33 is offline
Иван33
Участник
 
38 / 10 (1) +
Регистрация: 15.12.2007
Граждане, есть ли разумные люди, которые могли бы посоветовать что-то по такому вопросу?

Ситуация.

Есть структура файла:

<?xml version="1.0" encoding="UTF-16" standalone="no" ?>
<Example></Example>
...

всё это дело лепится хml-портом и одним кодеюнитом

Можно-ли штатными средствами вставить ещё одну строку так (см. ниже) используя триггеры xml-порта:

<?xml version="1.0" encoding="UTF-16" standalone="no" ?>
<? .... пример строки.....?>
<Example></Example>
...

Или это невозможно сделать в принципе и надо лезть в XML Dom и не использовать xml-порт?
Старый 28.04.2008, 10:08   #2  
Иван33 is offline
Иван33
Участник
 
38 / 10 (1) +
Регистрация: 15.12.2007
всем спасибо, я допёр.
Старый 28.04.2008, 12:41   #3  
Iceman is offline
Iceman
Участник
Аватар для Iceman
 
27 / 10 (1) +
Регистрация: 05.03.2008
Цитата:
Сообщение от Иван33 Посмотреть сообщение
всем спасибо, я допёр.
Ну расскажи тогда вкратце, как это сделать
__________________
<span style="color:#000000">Я не волшебник, я только учусь...</span>
Старый 28.04.2008, 22:51   #4  
Иван33 is offline
Иван33
Участник
 
38 / 10 (1) +
Регистрация: 15.12.2007
Цитата:
Сообщение от Iceman Посмотреть сообщение
Ну расскажи тогда вкратце, как это сделать
сдаётся мне, что я тебя знаю айсман.
Старый 29.04.2008, 09:46   #5  
Иван33 is offline
Иван33
Участник
 
38 / 10 (1) +
Регистрация: 15.12.2007
Цитата:
Сообщение от Iceman Посмотреть сообщение
Ну расскажи тогда вкратце, как это сделать
а ты тему вкурил?
Старый 29.04.2008, 12:15   #6  
Iceman is offline
Iceman
Участник
Аватар для Iceman
 
27 / 10 (1) +
Регистрация: 05.03.2008
Цитата:
Сообщение от Иван33 Посмотреть сообщение
сдаётся мне, что я тебя знаю айсман.
Всё может быть.

Цитата:
Сообщение от Иван33 Посмотреть сообщение
а ты тему вкурил?
Всмысле?

Блин. Прошу же опиши вкратце как разобрался с этим. Форум читает довольно много народу, в т.ч. и новичков вроде меня, которым интересно знать решение тех или иных простейших проблем... опыта-то ак-то нужно набираться =)
Так что, о великий сенсей, поведай нам тайну своего решения =)
__________________
<span style="color:#000000">Я не волшебник, я только учусь...</span>
Старый 29.04.2008, 13:41   #7  
Иван33 is offline
Иван33
Участник
 
38 / 10 (1) +
Регистрация: 15.12.2007
Цитата:
Сообщение от Iceman Посмотреть сообщение
Всё может быть.


Всмысле?
в том смысле, понятно-ли тебе, что за проблема у меня была и что в случае решения её получается?
Старый 06.05.2008, 12:47   #8  
Иван33 is offline
Иван33
Участник
 
38 / 10 (1) +
Регистрация: 15.12.2007
айсман вихади, да!?
Старый 20.05.2008, 11:26   #9  
Иван33 is offline
Иван33
Участник
 
38 / 10 (1) +
Регистрация: 15.12.2007
Цитата:
Сообщение от Iceman Посмотреть сообщение
Всё может быть.


Всмысле?

Блин. Прошу же опиши вкратце как разобрался с этим.
книга по программированию в Navision 5.0 читал и думал, думал, думал, чуть с ума не сошёл
Старый 17.06.2008, 18:21   #10  
rootadmin is offline
rootadmin
Участник
Аватар для rootadmin
 
224 / 10 (1) +
Регистрация: 25.03.2003
Адрес: Москва
Злой ты, Иван
А кто по полочкам разложит? Разжует и в рот положит?
__________________
С уваженем,
rootadmin
Старый 27.06.2008, 17:23   #11  
Иван33 is offline
Иван33
Участник
 
38 / 10 (1) +
Регистрация: 15.12.2007
Цитата:
Сообщение от rutadmeen Посмотреть сообщение
Злой ты, Иван
А кто по полочкам разложит? Разжует и в рот положит?
я не злой, айсмана звал, звал, книжку ему дал, а он не вышел, абыдэлся. да и потом, сколько на этом форуме не задавал вопросы, никто не отвечал. и это не один раз случалось.
Старый 27.06.2008, 17:45   #12  
Иван33 is offline
Иван33
Участник
 
38 / 10 (1) +
Регистрация: 15.12.2007
Цитата:
Сообщение от rutadmeen Посмотреть сообщение
Злой ты, Иван
и не злой, а безработный теперь
Старый 27.06.2008, 17:48   #13  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от Иван33 Посмотреть сообщение
я не злой, айсмана звал, звал, книжку ему дал, а он не вышел, абыдэлся. да и потом, сколько на этом форуме не задавал вопросы, никто не отвечал. и это не один раз случалось.
уважаемый Иван33, я не буду приводить список Ваших вопросов, но ответы Вы получали (ну кроме возможно ЛОТУСа конечно)!
Старый 27.06.2008, 18:34   #14  
Иван33 is offline
Иван33
Участник
 
38 / 10 (1) +
Регистрация: 15.12.2007
Цитата:
Сообщение от RedFox Посмотреть сообщение
уважаемый Иван33, я не буду приводить список Ваших вопросов, но ответы Вы получали (ну кроме возможно ЛОТУСа конечно)!
уважаемый красный лис, в теме про лотус, атвэчал сам. если вы имеете ввиду "получение ответов", то воспользоваться функцией "все сообщения пользователя" и получить мои сообщения по моему мнению недостаточно. если вы это сделали, и посмотрели на опцию "Ответы: ..." (нижняя строка), то опция вводит в заблуждение. технической статистикой форума, уважаемый красный лис, вы меня на засудите. да и неплохо было бы ознакомить публику с методом эээ вашего выведения меня на "чистую воду". ну и встречный вопрос, пачэму не ответили в этой теме первым? просмотров у темы за 800, а никто из гуру и несоизволил и если вы "опытный товарищ в делах навижен", то тем более недоумение растёт.
Старый 27.06.2008, 19:13   #15  
Иван33 is offline
Иван33
Участник
 
38 / 10 (1) +
Регистрация: 15.12.2007
Цитата:
Сообщение от RedFox Посмотреть сообщение
уважаемый Иван33, я не буду приводить список Ваших вопросов, но ответы Вы получали (ну кроме возможно ЛОТУСа конечно)!
а возьмите и приведите. их всего было 2.
Старый 27.06.2008, 21:09   #16  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
Для utf-8 легко:

Код:
 

myFile.CREATETEMPFILE;
myFile.CREATEOUTSTREAM(myOutStream);
XMLPORT.EXPORT(MyXMLPort,myOutStream);
myFile.CREATEINSTREAM(myInStream);
bigText.READ(MyInStream);
myFile.CLOSE;
bigtext.ADDTEXT('<?mytag?>',55);

IF EXISTS('C:\123.xml') THEN
  ERASE('C:\123.xml');

myFile.CREATE('C:\123.xml');
myFile.CREATEOUTSTREAM(myOutStream);
bigText.WRITE(myOutStream);
myFile.CLOSE();
С utf-16 надо перекодировать строку, и начинать с 110.
Надо признать, что с наскоку перекодировка не далась.
Старый 27.06.2008, 22:55   #17  
Иван33 is offline
Иван33
Участник
 
38 / 10 (1) +
Регистрация: 15.12.2007
Цитата:
Сообщение от apanko Посмотреть сообщение
Для utf-8 легко:

Код:
 

myFile.CREATETEMPFILE;
myFile.CREATEOUTSTREAM(myOutStream);
XMLPORT.EXPORT(MyXMLPort,myOutStream);
myFile.CREATEINSTREAM(myInStream);
bigText.READ(MyInStream);
myFile.CLOSE;
bigtext.ADDTEXT('<?mytag?>',55);

IF EXISTS('C:\123.xml') THEN
  ERASE('C:\123.xml');

myFile.CREATE('C:\123.xml');
myFile.CREATEOUTSTREAM(myOutStream);
bigText.WRITE(myOutStream);
myFile.CLOSE();
С utf-16 надо перекодировать строку, и начинать с 110.
Надо признать, что с наскоку перекодировка не далась.
спасибо за почин (а то сразу судить, чай не в Нюрнберге живём), ну а структуру эксемеля итоговую чего не дали?
вы реализовали классический случай, когда эксемель делается с нуля. но есть ещё другой клинический, когда есть эксемель сделанный xml-портом, или сторонним производителем (проблема кодировки не возникает).
Старый 28.06.2008, 13:12   #18  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
Структура итогового файла такая (как в вашем первом посте):
Цитата:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<?MyTag?>
<Example></Example>
Что вы имеете в виду: "хмл делается с нуля"?.
Я предложил способ добавления тега к хмл-файлу создаваемому хмл-портом. Шаги:

* Выгружаем хмл-структуру во что-нибудь, поддерживающее потоки (выгружаем ХМЛ-портом). Я выгружал во временный файл.
* Загружаем хмл-структуру из временного файла в бигтекст.
* С помощью фукнции аддтекст добавляем в нужное (нужное место было определено экспериментальным путем) наш текст: '<?....?>'
* Выгружаем отредактированную хмл-структуру из бигтекста в файл (уже настоящий, а не временный).

Точно также можно править любые хмл-файлы, достаточно открыть файл, создать поток и запихнуть этот поток в бигтекст. Далее АддТекст(нужный текст, нужное место) и отправка модифицированного потока обратно.

Ограничение, как я сказал UTF-16 кодировка. Но думаю ее тоже можно победить.
Старый 28.06.2008, 15:07   #19  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
UTF-16 удалось победить примитивным способом.

Код:
 

ttext2:='<?my_tag?>';  //добавляемая строка

myFileFrom.OPEN('C:\1_16.xml'); //исходный хмл-файл 
myFileTo.CREATE('C:\123.xml');  //новый хмл-файл с новым тегом

iii:=0;
WHILE myFileFrom.POS<>myFileFrom.LEN DO BEGIN  //читаем исходный файл по символьно.
  iii+=1;
  myFileFrom.READ(ch); 
  myFileTo.WRITE(ch);   //и переписываем в новый.
  IF iii=116 THEN		  //пока не дойдем до нужного места (опять же определено эксперементально)
	FOR ttt:=1 to strlen(ttext2) DO BEGIN
	  myFileTo.WRITE(ttext2[ttt]);  //пишем новые символы из строки
	  myFileTo.WRITE(ch0);		   //к каждому символу добавляем символ ch0:=0; 
	END;
END;
myFileTo.CLOSE();
myFileFrom.CLOSE();
Естественно, также можно бороться и с utf-8, только ch0 добавлять не нужно.

PS. добавлять ноль нужно для латиницы, что добавлять для русских символов - не знаю, нужно смотреть.
Старый 28.06.2008, 16:14   #20  
Иван33 is offline
Иван33
Участник
 
38 / 10 (1) +
Регистрация: 15.12.2007
Цитата:
Сообщение от apanko Посмотреть сообщение
Структура итогового файла такая (как в вашем первом посте):


Что вы имеете в виду: "хмл делается с нуля"?.
Я предложил способ добавления тега к хмл-файлу создаваемому хмл-портом. Шаги:

* Выгружаем хмл-структуру во что-нибудь, поддерживающее потоки (выгружаем ХМЛ-портом). Я выгружал во временный файл.
* Загружаем хмл-структуру из временного файла в бигтекст.
* С помощью фукнции аддтекст добавляем в нужное (нужное место было определено экспериментальным путем) наш текст: '<?....?>'
* Выгружаем отредактированную хмл-структуру из бигтекста в файл (уже настоящий, а не временный).

Точно также можно править любые хмл-файлы, достаточно открыть файл, создать поток и запихнуть этот поток в бигтекст. Далее АддТекст(нужный текст, нужное место) и отправка модифицированного потока обратно.

Ограничение, как я сказал UTF-16 кодировка. Но думаю ее тоже можно победить.
апанко, снимаю шляпу на бывшем месте работы над проблемой бились "лучшие умы", но не добились решения. сначала пытались вмешаться в работу эксемель порта на той стадии, где появляется самая первая строка эксемель-файла (первая инструкция процессору - Processing Instruction) и далее начинается самый первый тэг (Root) - корень. мутили что-то с потоками, там передача его туда сюда, триггерами эксемель порта, но ничего не получилось, вставляемая строка появлялась то вначале вообще всего файла, то в конце всего файла и т. п. в связи с этим появилось подозрение, что мс спецом это сделало (по моему мнению, казалось бы необходимая операция и самая простая). ну, а дальше бились над вариантом, который работает у вас, в итоге тоже не смогли. пришлось разбираться мне в XML DOM и в преломлении к Navision.

"Что вы имеете в виду: "хмл делается с нуля"?." - когда структура файла делается постепенно. в контексте использования порта - добавка нужной строки в нужном месте не после того, как уже будет сформирован эксемель этим портом полностью, а постепенно (1 строка, вторая, третья - т. е., есть возможность добавлять, либо не добавлять строку, в зависимости от определённых условий).
 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:47.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.