Экспорт & импорт в нужном Xml формате

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 223
24
#1
В общем самые разнообразные доки нужно экспортнуть в весьма специфический XML со своими правилами и разметко.
И вот тут меня начинает колбасить, хочется сделать и красиво и настраиваемо.
Нужно - экспортнуть/импортнуть в один XML: входящий документ со всеми его резолюциями и всеми сопутствующими аттачами
Что выбрать то?
первоначально думал возьму экпортну средствами парсера а потом попереименовываю теги на нужные а остальной мусор поудаляю
Теперь думаю, что нужно взять всё под контроль и формировать програмно по тегу, что лучше делать в такой ситуации?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 483
360
#2
проблема актульна в срезе потребления ресурсов...
стили требуют полной загрузки (памяти)..., прямая замена (SAX - на-лету, в потоке) может дать невалидный ХМЛ на выходе (если стр-ра сложная)
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 223
24
#3
стили требуют полной загрузки (памяти)
загрузку я может быть еще бы оптимизировал как нибудь, если бы хоть увидел нормальные пример подхвата и выгрузки в XML аттача
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 483
360
#4
не понял про выгрузку аттача...
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 223
24
#5
lmike
нужно в требуемый XML еще и все аттачи из дока выгрузить, КАК это сделать самому? :)
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 483
360
#6
я не понимаю - что значит выгрузить в ХМЛ аттач...
цель какая, в аттача ХМЛ тоже?
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 223
24
#7
lmike
цель, контролируемо собрать XML согласно спецификации и так же туда слить все аттачи что подходят под критерии

есть пример чтобы в XML просто слить одно поле и один аттач и конкретного дока?
я вот не находу примеров где на срипте я могу взять аттач из дока и напрямую слить его в XML или же выложить во временную папку и слить этот аттач(его бинарное содержимое) в XML?
 
K

K-Fire

Гость
#8
А в чем проблема? Берешь аттач, в base64 кодируешь и прямо вставляешь в xml-строку. Если xml получен DXL-экспортом, то там вроде уже в base64 должно всё быть.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 223
24
#9
А в чем проблема? Берешь аттач, в base64 кодируешь и прямо вставляешь в xml-строку. Если xml получен DXL-экспортом, то там вроде уже в base64 должно всё быть.
примерчик дай :rolleyes:
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 483
360
#10
пример чего - при операции экспорта (из хэлпа) уже получишь хмл с аттачем унутря (в виде base64)
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 223
24
#11
пример чего - при операции экспорта (из хэлпа) уже получишь хмл с аттачем унутря (в виде base64)
всё верно, а теперь представь что мне туда нужно вставить ЕЩЕ один аттач, из другого документа, как быть?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 483
360
#12
допиши в конец (перед закрывающим док </document>, в нужных тегах), хинт ставь где хошь (унутря РТ)
дергалки аттачей - я давал, здесь, ссылки, там и LAX и VDT (мои экперименты)

теги:
Код:
	String txtStartFileItem="<item name='$FILE' summary='true' sign='true' seal='true'>"+
"<object><file hosttype='msdos' compression='none' flags='storedindoc' name='"+zipFileName+"'>";
String txtStartFileData="<filedata>";
String txtEndFileItem="</filedata></file></object></item>";
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 223
24
#13
lmike
как выглядят теги я знаю, мне интересно есть ли какой метод у парсера, чтобы можно было добавить ЕЩЕ аттачи?
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 223
24
#16
если кому интересно то сделал в самой простой форме ;)
Код:
Forall in1 In vFiles ' проходимся по файлам
If Len(in1)>0 Then
Set object = Doc.GetAttachment(in1)
If Not object Is Nothing Then
s1 = pathname & in1
Call object.ExtractFile(s1) ' выкладываем
If stream2.Open(s1, "binary") Then ' удалось открыть
Do
buffer = stream2.Read(32767)
Call Gstream.Write(buffer)
Loop Until stream2.IsEOS
Call stream2.Close
End If
End If
End If
End Forall