|
23.04.2008, 13:46 | #1 |
Участник
|
Граждане, есть ли разумные люди, которые могли бы посоветовать что-то по такому вопросу?
Ситуация. Есть структура файла: <?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 |
Участник
|
всем спасибо, я допёр.
|
|
28.04.2008, 12:41 | #3 |
Участник
|
__________________
<span style="color:#000000">Я не волшебник, я только учусь...</span> |
|
28.04.2008, 22:51 | #4 |
Участник
|
|
|
29.04.2008, 09:46 | #5 |
Участник
|
|
|
29.04.2008, 12:15 | #6 |
Участник
|
Всё может быть.
Всмысле? Блин. Прошу же опиши вкратце как разобрался с этим. Форум читает довольно много народу, в т.ч. и новичков вроде меня, которым интересно знать решение тех или иных простейших проблем... опыта-то ак-то нужно набираться =) Так что, о великий сенсей, поведай нам тайну своего решения =)
__________________
<span style="color:#000000">Я не волшебник, я только учусь...</span> |
|
29.04.2008, 13:41 | #7 |
Участник
|
|
|
20.05.2008, 11:26 | #8 |
Участник
|
Цитата:
|
|
06.05.2008, 12:47 | #9 |
Участник
|
айсман вихади, да!?
|
|
17.06.2008, 18:21 | #10 |
Участник
|
Злой ты, Иван
А кто по полочкам разложит? Разжует и в рот положит?
__________________
С уваженем, rootadmin |
|
27.06.2008, 17:23 | #11 |
Участник
|
|
|
27.06.2008, 17:48 | #12 |
Участник
|
уважаемый Иван33, я не буду приводить список Ваших вопросов, но ответы Вы получали (ну кроме возможно ЛОТУСа конечно)!
|
|
27.06.2008, 18:34 | #13 |
Участник
|
уважаемый красный лис, в теме про лотус, атвэчал сам. если вы имеете ввиду "получение ответов", то воспользоваться функцией "все сообщения пользователя" и получить мои сообщения по моему мнению недостаточно. если вы это сделали, и посмотрели на опцию "Ответы: ..." (нижняя строка), то опция вводит в заблуждение. технической статистикой форума, уважаемый красный лис, вы меня на засудите. да и неплохо было бы ознакомить публику с методом эээ вашего выведения меня на "чистую воду". ну и встречный вопрос, пачэму не ответили в этой теме первым? просмотров у темы за 800, а никто из гуру и несоизволил и если вы "опытный товарищ в делах навижен", то тем более недоумение растёт.
|
|
27.06.2008, 19:13 | #14 |
Участник
|
|
|
27.06.2008, 17:45 | #15 |
Участник
|
|
|
27.06.2008, 21:09 | #16 |
MCTS
|
Для 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(); Надо признать, что с наскоку перекодировка не далась. |
|
27.06.2008, 22:55 | #17 |
Участник
|
Цитата:
Сообщение от 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(); Надо признать, что с наскоку перекодировка не далась. вы реализовали классический случай, когда эксемель делается с нуля. но есть ещё другой клинический, когда есть эксемель сделанный xml-портом, или сторонним производителем (проблема кодировки не возникает). |
|
28.06.2008, 13:12 | #18 |
MCTS
|
Структура итогового файла такая (как в вашем первом посте):
Цитата:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<?MyTag?> <Example></Example> Я предложил способ добавления тега к хмл-файлу создаваемому хмл-портом. Шаги: * Выгружаем хмл-структуру во что-нибудь, поддерживающее потоки (выгружаем ХМЛ-портом). Я выгружал во временный файл. * Загружаем хмл-структуру из временного файла в бигтекст. * С помощью фукнции аддтекст добавляем в нужное (нужное место было определено экспериментальным путем) наш текст: '<?....?>' * Выгружаем отредактированную хмл-структуру из бигтекста в файл (уже настоящий, а не временный). Точно также можно править любые хмл-файлы, достаточно открыть файл, создать поток и запихнуть этот поток в бигтекст. Далее АддТекст(нужный текст, нужное место) и отправка модифицированного потока обратно. Ограничение, как я сказал UTF-16 кодировка. Но думаю ее тоже можно победить. |
|
28.06.2008, 16:14 | #19 |
Участник
|
Цитата:
Сообщение от apanko
Структура итогового файла такая (как в вашем первом посте):
Что вы имеете в виду: "хмл делается с нуля"?. Я предложил способ добавления тега к хмл-файлу создаваемому хмл-портом. Шаги: * Выгружаем хмл-структуру во что-нибудь, поддерживающее потоки (выгружаем ХМЛ-портом). Я выгружал во временный файл. * Загружаем хмл-структуру из временного файла в бигтекст. * С помощью фукнции аддтекст добавляем в нужное (нужное место было определено экспериментальным путем) наш текст: '<?....?>' * Выгружаем отредактированную хмл-структуру из бигтекста в файл (уже настоящий, а не временный). Точно также можно править любые хмл-файлы, достаточно открыть файл, создать поток и запихнуть этот поток в бигтекст. Далее АддТекст(нужный текст, нужное место) и отправка модифицированного потока обратно. Ограничение, как я сказал UTF-16 кодировка. Но думаю ее тоже можно победить. "Что вы имеете в виду: "хмл делается с нуля"?." - когда структура файла делается постепенно. в контексте использования порта - добавка нужной строки в нужном месте не после того, как уже будет сформирован эксемель этим портом полностью, а постепенно (1 строка, вторая, третья - т. е., есть возможность добавлять, либо не добавлять строку, в зависимости от определённых условий). |
|
28.06.2008, 15:07 | #20 |
MCTS
|
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(); PS. добавлять ноль нужно для латиницы, что добавлять для русских символов - не знаю, нужно смотреть. |
|