• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Выгрузка документв в DXL, изменение и загрузка обратно в базу

  • Автор темы fedotxxl
  • Дата начала
F

fedotxxl

Прошу прощения, что шпарю вопросами...

Итак, нужно:
1. Выгрузить notesDocument в domParser
2. Изменить xml (это я сам)
3. Загрузить измененный xml обратно в базу

Код
Set dxlExporter = ns.CreateDXLExporter
Call dxlExporter.SetInput(nd)
Call dxlExporter.SetOutput(domParser)
Call dxlExporter.Process

'Удаляем документ
Call ndTemp.Remove(True)

Dim dxlImporter As NotesDXLImporter
Set dxlImporter = ns.CreateDXLImporter
Call dxlImporter.setInput(domParser)
Call dxlImporter.setOutput(ns.CurrentDatabase)
Call dxlImporter.Process
не работает, т.к., насколько я понял нельзя повторно вызывать метод .Process для "связанных" парсеров
 
A

Akupaka

ты бы лучше сначала определил почему не работает. см свойство Log, например
 
O

Omh

Код:
'где-то тут объявляется DOMParser

Set dxlExporter = ns.CreateDXLExporter
Call dxlExporter.SetInput(nd)
Call dxlExporter.SetOutput(domParser)

Dim dxlImporter As NotesDXLImporter
Set dxlImporter = ns.CreateDXLImporter
Call dxlImporter.setInput(domParser)
Call dxlImporter.setOutput(ns.CurrentDatabase)

Call dxlExporter.Process

Process надо говорить тока инициатору.
Это зовётся pipeline, прям как олдскульная песне Депешей :(
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
кроме прогресса есть еще импорт и экспорт :(
 
Z

zum

Задача такая:
Есть коллекция документов по одной форме (однотипных)
Эта коллекция выгружается в DXL
Документ простой несколько полей.
Выгружается дабы, отредактировать данные и добавить еще много много таких документов, токо с другими значениями.
Ну и затем импортируется обратно

Проще говоря, выгружаем получаем шаблон документа, добавляем по шаблону еще.

Вопрос собственно, такой
Это вообще идея здравая или можно еще чтото придумать?
Может кто уже сталкивался с похожей проблемой?
И если здравая есть, какой-нить удобный редактор? или придется его написать?
 
O

Omh

DXLExporter -> DOMParser -> DXLImporter

Если охота ручками, то, кмк, лучше notepad++ ничего нет.
 
T

TIA

zum
А почему нельзя просто копировать нотусовый документ и править в нём поля на эти самые другие значения?
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
ну правильно, можно целую колекцию скормить :rolleyes:
 
Z

zum

ну из этого поста, понимаю что идея сама по себе не совсем больная.
вот кусок документа
Код:
<document form='formCompani'>
<noteinfo noteid='1c542' unid='4A04C43E86BFA669C3257678002F0E56' sequence='2'>
<created><datetime>20091124T113358,62+03</datetime></created>
<modified><datetime>20091124T113406,33+03</datetime></modified>
<revised><datetime>20091124T113406,32+03</datetime></revised>
<lastaccessed><datetime>20091124T113406,32+03</datetime></lastaccessed>
<addedtofile><datetime>20091124T113406,17+03</datetime></addedtofile></noteinfo>
<updatedby><name>CN=User/O=SERV</name></updatedby>
<revisions><datetime>20091124T113406,17+03</datetime></revisions>
<item name='txtNameCompani'><text>Тест</text></item>
<item name='Iss'><text>1</text></item></document>
</database>

Возникли следующие вопросы:
1) что будет если передать юнид "00000...000"?
2) что будет если будут одинаковые юниды?
3) вся ли информация тут нужна? в частности noteinfo,revisions.



Добавлено:
zum
А почему нельзя просто копировать нотусовый документ и править в нём поля на эти самые другие значения?

Потому что, докуентов может быть тысячи...
Я сделаю загрузку из фала по полям, или из экселевкой или еще какой таблицы не суть...
Просто дают список большой, в каком угодно формате нужно будет создать сооветсвенно списку документы
 
T

TIA

Потому что, докуентов может быть тысячи...
Так тем более. Собственно создание документа через DXL гораздо тормознее, чем напрямую.
Другое дело, из внешнего файла брать данные для заполнения новых документов-копий.

1) что будет если передать юнид "00000...000"?
2) что будет если будут одинаковые юниды?
Поведение задаётся через св-во NotesDXLImporter.DocumentImportOption
 
Z

zum

Так тем более. Собственно создание документа через DXL гораздо тормознее, чем напрямую.
Другое дело, из внешнего файла брать данные для заполнения новых документов-копий.

Ну сначала необходимо список весь получит, в лубом случае
Чтобы пользователь видел, что будет добавлено. Ну или заменено.
И чтоб, можно было и ручками добавить... кароч большой функционал редактирования, будет, тогды
И источник может быть, в любом формате.

Вот... А скорость не критично, установка начальных данных, один раз будет делаться.

Дак чего по пунктам 1,2,3? Ктонить знает?
 
A

Akupaka

2) что будет если будут одинаковые юниды?
см notesDXLImporter.DocumentImportOption

Потому что, докуентов может быть тысячи...
и ты хочешь чтобы программа, которая экспортирует файл формировала весь DXL?
а не проще будет свой XML формат сделать, и написать код, который будет его читать и создавать уже документы по данным оттуда, а не надеятся, что лотус съест DXL?

от блин, шустрый TIA :rolleyes: радует, что разные люди мыслят схожими вариантами реализации ))
 
K

Klido

Ну сначала необходимо список весь получит, в лубом случае
Чтобы пользователь видел, что будет добавлено. Ну или заменено.
т.е. ты лотусиную базу хочешь в dxl всю выплюнуть, загрузить куда-то+внешние данные, поработать дать там юзеру и потом обратно в базу лотуса качнуть? ох-хо-хо...
 
Z

zum

см notesDXLImporter.DocumentImportOption


и ты хочешь чтобы программа, которая экспортирует файл формировала весь DXL?
а не проще будет свой XML формат сделать, и написать код, который будет его читать и создавать уже документы по данным оттуда, а не надеятся, что лотус съест DXL?

от блин, шустрый TIA :rolleyes: радует, что разные люди мыслят схожими вариантами реализации ))
А если будет другой шаблон?
Тобишь мне надо написать алгоритм который, структуру документов создаст...
хм... по сути тоже самое что и DXL.

То есть я хочу сделать так:
notesDXLExporter делает шаблон, я в него программно добавлю документы из внешнего источника.
и обратно
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
шаблоны шаблонами, но в алгоритме мне ненра создание доков (особливо массовое) "единомоментно"
часы на сервере "убегут" однозначно :(
ведь док можно и апдейтить (уже существующие) доки, кот. можно создавать "пулами" в к-л ненагрузочное время, с запасом
 
Z

zum

Ну если кому интересно, то программа написана.
Работает стабильно, импорт примерно 100 док в секунду
Сервер не умирает, нигде ничего не убегает. тьфу-тьфу-тьфу
 
T

TIA

Ну, левой рукой правое ухо тоже можно чесать. Не удобно только.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!