AXForum  
Zurück   AXForum > Microsoft Dynamics NAV > NAV: Функционал
DAX
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen Alle Foren als gelesen markieren

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 23.04.2008, 13:46   #1  
Иван33 ist offline
Иван33
Участник
 
38 / 10 (1) +
Registriert seit: 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-порт?
Alt 28.04.2008, 10:08   #2  
Иван33 ist offline
Иван33
Участник
 
38 / 10 (1) +
Registriert seit: 15.12.2007
всем спасибо, я допёр.
Alt 28.04.2008, 12:41   #3  
Iceman ist offline
Iceman
Участник
Benutzerbild von Iceman
 
27 / 10 (1) +
Registriert seit: 05.03.2008
Zitat:
Zitat von Иван33 Beitrag anzeigen
всем спасибо, я допёр.
Ну расскажи тогда вкратце, как это сделать
__________________
<span style="color:#000000">Я не волшебник, я только учусь...</span>
Alt 28.04.2008, 22:51   #4  
Иван33 ist offline
Иван33
Участник
 
38 / 10 (1) +
Registriert seit: 15.12.2007
Zitat:
Zitat von Iceman Beitrag anzeigen
Ну расскажи тогда вкратце, как это сделать
сдаётся мне, что я тебя знаю айсман.
Alt 29.04.2008, 09:46   #5  
Иван33 ist offline
Иван33
Участник
 
38 / 10 (1) +
Registriert seit: 15.12.2007
Zitat:
Zitat von Iceman Beitrag anzeigen
Ну расскажи тогда вкратце, как это сделать
а ты тему вкурил?
Alt 29.04.2008, 12:15   #6  
Iceman ist offline
Iceman
Участник
Benutzerbild von Iceman
 
27 / 10 (1) +
Registriert seit: 05.03.2008
Zitat:
Zitat von Иван33 Beitrag anzeigen
сдаётся мне, что я тебя знаю айсман.
Всё может быть.

Zitat:
Zitat von Иван33 Beitrag anzeigen
а ты тему вкурил?
Всмысле?

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


Всмысле?
в том смысле, понятно-ли тебе, что за проблема у меня была и что в случае решения её получается?
Alt 06.05.2008, 12:47   #8  
Иван33 ist offline
Иван33
Участник
 
38 / 10 (1) +
Registriert seit: 15.12.2007
айсман вихади, да!?
Alt 20.05.2008, 11:26   #9  
Иван33 ist offline
Иван33
Участник
 
38 / 10 (1) +
Registriert seit: 15.12.2007
Zitat:
Zitat von Iceman Beitrag anzeigen
Всё может быть.


Всмысле?

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

Code:
 

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.
Надо признать, что с наскоку перекодировка не далась.
Alt 27.06.2008, 22:55   #17  
Иван33 ist offline
Иван33
Участник
 
38 / 10 (1) +
Registriert seit: 15.12.2007
Zitat:
Zitat von apanko Beitrag anzeigen
Для utf-8 легко:

Code:
 

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-портом, или сторонним производителем (проблема кодировки не возникает).
Alt 28.06.2008, 13:12   #18  
apanko ist offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1.164 / 139 (7) +++++
Registriert seit: 24.02.2005
Структура итогового файла такая (как в вашем первом посте):
Zitat:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<?MyTag?>
<Example></Example>
Что вы имеете в виду: "хмл делается с нуля"?.
Я предложил способ добавления тега к хмл-файлу создаваемому хмл-портом. Шаги:

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

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

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

Code:
 

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. добавлять ноль нужно для латиницы, что добавлять для русских символов - не знаю, нужно смотреть.
Alt 28.06.2008, 16:14   #20  
Иван33 ist offline
Иван33
Участник
 
38 / 10 (1) +
Registriert seit: 15.12.2007
Zitat:
Zitat von apanko Beitrag anzeigen
Структура итогового файла такая (как в вашем первом посте):


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

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

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

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

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

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 17:42 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.