powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Import PBDOM_Document into DataStore without XML file
15 сообщений из 15, страница 1 из 1
Import PBDOM_Document into DataStore without XML file
    #32798956
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть массив документов типа PBDOM_Document . Каждый документ подогнан под Import Template соответствующего DataStore , т.е. имеется и массив DataStore . Можно ли как-то загнать данные из массива документов в соответствующие DataStore без использования промежуточного звена в виде создания XML files и последующего их импорта через ImportFile ?

Буду очень признателен за любые идеи и помощь...
...
Рейтинг: 0 / 0
Import PBDOM_Document into DataStore without XML file
    #32800878
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злые вы. Какие-то не хорошие. Уйду я от вас. Нет бы помочь коллеге. А вы...

Я думаю, может связь между элементом (атрибутом) из PBDOM_Document и наименованием поля в DataStore можно получить из Import Template ? Насколько трудоемок данный вариант? Не проще ли будет все же через XML file ? Не хочется данные сливать во временный файл по соображениям безопасности (данные секретные) и надежности работы системы.
Ах да, еще PowerBuilder 9.0.1 Build 7236
...
Рейтинг: 0 / 0
Import PBDOM_Document into DataStore without XML file
    #32801766
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так вроде бы ImportString можно скормить XML. Или я чего-то не понимаю?
...
Рейтинг: 0 / 0
Import PBDOM_Document into DataStore without XML file
    #32801837
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, но как мне PBDOM_Document слить в String ? Прямых функций для этого как бы нет. Писать свой код для этого? Что-то я сомневаюсь в легкости этого пути.
Или я не прав? Если скажешь, как можно сделать то буду очень рад...
...
Рейтинг: 0 / 0
Import PBDOM_Document into DataStore without XML file
    #32801987
Guest_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Black SavageДа, но как мне PBDOM_Document слить в String ? Прямых функций для этого как бы нет. Писать свой код для этого? Что-то я сомневаюсь в легкости этого пути.
Или я не прав? Если скажешь, как можно сделать то буду очень рад...

А это не подходит?

автор
The following code declares an array to hold the elements returned from the GetContent method, which reads the PBDOM_DOCUMENT object named pbdom_doc:

PBDOM_OBJECT pbdom_obj_array[] ... pbdom_doc.GetContent(ref pbdom_obj_array)

The pbdom_obj_array array now contains one value representing the root element of pbdom_doc: <Root>.

To access the other nodes in pbdom_doc, the GetRootElement method is used with the GetContent method.

pbdom_doc.GetRootElement().GetContent & (ref pbdom_obj_array)

The pbdom_obj_array array now contains three values corresponding to the three child nodes of the root element of pbdom_doc: <Element_1>, <Element_2>, and <Element_3>.
...
Рейтинг: 0 / 0
Import PBDOM_Document into DataStore without XML file
    #32803113
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, народ совсем не работает с PBDOM . Ну ладно, нефига выпендриваться, будем делать через файлы ...
...
Рейтинг: 0 / 0
Import PBDOM_Document into DataStore without XML file
    #32803522
tedy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Black Savage Похоже, народ совсем не работает с PBDOM. Ну ладно, нефига выпендриваться, будем делать через файлы

Похоже это на извращение какое-то
...
Рейтинг: 0 / 0
Import PBDOM_Document into DataStore without XML file
    #32803712
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может и изврат, тока другого пути нет. Никто ж ничего путного не предложил.
To ЗоринАндрей - это не очень тривиальная задача конвертить PBDOM_Document в нормальный String . Т.к. по суте, нужно воспроизводить структуру, которая получается при сохранении данных в файл с помощью SaveDocument .
To Guest_1 , похоже сам не понял чего он написал, т.к. готовый PBDOM_Document уже содержит в себе все необходимые данные.

Я сам хотел пробиться через Template соответствующего DataStore , используя конструкцию с Describe("DataWindow.Syntax") и тот факт, что мы можем легко получить имя столбца Describe( "#" + string(ll_i) + ".Name" ) . Но разбор сложной ветвистой структуры Template меня не вдохновил. Все было бы просто, если б наименования атрибутов в разных элементах были б разные, но они будут совпадать. К тому же, при импорте через файлы можно воспользоваться полезной фичей по диагностики ошибок Trace File .

Вообщем, затраты на программирование импорта без XML файла, мне кажутся, сопоставимыми с нашей основной задачей. Что не есть гуд...
...
Рейтинг: 0 / 0
Import PBDOM_Document into DataStore without XML file
    #32803913
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А Вы,случайно, это не для отправки-приема документов в/из ЦБ делаете?
...
Рейтинг: 0 / 0
Import PBDOM_Document into DataStore without XML file
    #32804118
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To urvas
Да-а-а!..
Может, поделишься своими идеями? А то вариться в собственном соку мне не в кайф...
...
Рейтинг: 0 / 0
Import PBDOM_Document into DataStore without XML file
    #32804211
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, в приватном порядке, а то осталным, наверное, не очень интересно. Для начала, может по почте - urvas()mail.ru
...
Рейтинг: 0 / 0
Import PBDOM_Document into DataStore without XML file
    #32804312
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай...
...
Рейтинг: 0 / 0
Import PBDOM_Document into DataStore without XML file
    #32823458
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ларчик просто открывался:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
ls_Syntax = ads_datastore.Describe("DataWindow.Syntax")
ll_Pos = Pos(ls_Syntax, "export.xml")
if IsNull(ll_Pos) then
	as_ErrorMessage = "Не удалось распознать синтаксис DataWindow."
	return false
end if
if ll_Pos =  0  then
	as_ErrorMessage = "Не удалось распознать синтаксис DataWindow."
	return false
end if
ls_Syntax = Mid(ls_Syntax, ll_Pos, Len(ls_Syntax) - ll_Pos)
ll_Pos = Pos(ls_Syntax, 'name="' + as_template + '" xml="<?xml')
if IsNull(ll_Pos) then
	as_ErrorMessage = "Не удалось найти шаблон " + as_template+ " для DataWindow."
	return false
end if
if ll_Pos =  0  then
	as_ErrorMessage = "Не удалось найти шаблон " + as_template+ " для DataWindow."
	return false
end if
ls_Syntax = Mid(ls_Syntax, ll_Pos + len('name="' + as_template + '" xml="<?xml') - &
						 5 , Len(ls_Syntax) - ll_Pos)
ll_NumCol = Pos(ls_Syntax, '>")')
if IsNull(ll_NumCol) then
	as_ErrorMessage = "Не удалось распознать шаблон " + as_template+ " в DataWindow."
	return false
end if
if ll_NumCol =  0  then
	as_ErrorMessage = "Не удалось распознать шаблон " + as_template+ " в DataWindow."
	return false
end if
ls_Syntax = Mid(ls_Syntax,  1 , ll_NumCol)
ll_Pos =  1 
do while ll_Pos <>  0 
	ll_Pos = Pos(ls_Syntax, '=~~"')
	if IsNull(ll_Pos) then exit
	if ll_Pos =  0  then exit
	ls_Syntax = Mid(ls_Syntax,  1 , ll_Pos) + '"' + Mid(ls_Syntax, ll_Pos +  3 , Len(ls_Syntax))
loop
ll_Pos =  1 
do while ll_Pos <>  0 
	ll_Pos = Pos(ls_Syntax, '~~"')
	if IsNull(ll_Pos) then exit
	if ll_Pos =  0  then exit
	ls_Syntax = Mid(ls_Syntax,  1 , ll_Pos -  1 ) + Mid(ls_Syntax, ll_Pos +  1 , Len(ls_Syntax))
loop
ls_ValueTmp = ""
if XMLParseString(ls_Syntax, ValNever!, ls_ValueTmp, TRUE, TRUE) <>  0  then
	as_ErrorMessage = ls_ValueTmp
	return false
end if

Это в первом приближении. Т.е. из Describe("DataWindow.Syntax") получаем шаблон для импорта, вырезаем оттуда ~ и получаем, что значением элемента или атрибута является наименование столбца в DataStore . На основе полученной таким образом строки ls_Syntax строим PBDOM_Document , который будет являться шаблоном для сравнения со структурой входящего PBDOM_Document (который и содержит необходимые данные для импорта в DataStore ). Вообщем, получилось достаточно красивое решение. Мне аж самому понравилось. Если будет у кого желание, могу выложить весь объект...
...
Рейтинг: 0 / 0
Import PBDOM_Document into DataStore without XML file
    #32825886
Andyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Black SavageЕсли будет у кого желание, могу выложить весь объект... Есть такое желание. :) Похоже в скором времени придется вплотную работать с XML, вдруг пригодится. :)
...
Рейтинг: 0 / 0
Import PBDOM_Document into DataStore without XML file
    #32826293
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забирайте. Это бета версия...
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Import PBDOM_Document into DataStore without XML file
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]