Здравтвуйте, все.
Может, у кого-нибудь есть примеры экспорта и импорта данных в XML для Legacy шаблонов Cw6.0 ? А то читал я доку, читал... Ничего не понятно - откуда начинать.
XML Export-Import
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Re: XML Export-Import
Хилые там шаблоны, проку от них почти никакого.... А вот классы использовать можно.Geydar писал(а):Здравтвуйте, все.
Может, у кого-нибудь есть примеры экспорта и импорта данных в XML для Legacy шаблонов Cw6.0 ? А то читал я доку, читал... Ничего не понятно - откуда начинать.
Какая главная проблема - экспорт или импорт? Если экспорт, можно и в обычный текстовый файл выводить, проще будет. А импорт пользую...
Качни у меня http://www.tacis-dipol.ru/fil/xml1251.zip . Тогда можно и кириллицу читать. А насчёт как обработать - свяжись со мной по почте yufil@tacis-dipol.ru или по аське 75924439.Geydar писал(а):Сейчас актуально импортировать данные.
Чужая система может выдать мне XML и меня спрашивают, в каком виде его выдать. Я не могу ответить, потому-то не знаю как обработать.
Кстати, есть и бесплатная либа IQ-XML
Давай популярно объясню... И другим пригодится.Geydar писал(а):Сейчас актуально импортировать данные.
Чужая система может выдать мне XML и меня спрашивают, в каком виде его выдать. Я не могу ответить, потому-то не знаю как обработать.
Данный код взят из текста процедуры ViewXML и мне кажется наиболее простым для анализа
1. В модуль, где надо читать XML, поместить в начало две строки объявлений
INCLUDE('CPXML.INC'),ONCE
INCLUDE('XMLCLASS.INC'),ONCE
Если лень (а мне лень), можно на один из экранов подключить невидимую кнопку шаблона View XML . Хотя я не уверен, что это сработает в Legacy
2. В процедуру, где мы собираемся читать XML, добавляем декларации
xmlDoc &Document,Auto
Nl &Nodelist,Auto
nnm &NamedNodeMap,auto
ANode &Node,Auto
AttrIndex Long
ListXML queue(DOMQueue) ! Очередь для считывания параметров
end
ListXMLCount Long
3. Открываем документ на считывание
xmlDoc &= XMLFileToDOM(FileName)
If xmlDoc &= Null
! Документ не открылся, надо смотреть.
! Например, открыть браузером и разбираться с ошибками в структуре
End
! Считываем документ в дерево
FillDomQueue(XMLDoc,ListXML,1)
! Начинаем считывать информацию из дерева
ListXMLCount=1
! Идём по структуре дерева вниз
Loop While(ListXMLCount<=Records(ListXML))
! Предположим, что у нас есть строки
! <name1>
! <name2>
Case lower(ListXML.Node.getNodeName()) ! Выбираем имя тэга
Of 'name1'
Do ParseName1
Of 'name2'
Do ParseName2
End
Free(ListXML)
XMLDoc.Release()
! Теперь напишем разбор конкретных параметров
ParseName1 Routine
nnm &= ListXML.Node.getAttributes()
if not nnm &= null ! Есть атрибуты
loop AttrIndex = 0 to nnm.getLength() - 1 ! Цикл по атрибутам
Anode &= nnm.item(AttrIndex)
Case lower(ANode.GetNodename())
Of 'param1'
Param1Value=ANode.getNodeValue()
Of 'param2'
Param2Value=ANode.getNodeValue()
...
End
end
end
! Ну и куда-то записываем параметры считанной строки...
nnm.release()
Exit
И ещё несколько замечаний.
1. Если параметр имеет вид
<name> значение </name> , то значение находится не в той строке, где <name>, а в следующей. Тогда его надо читать как
ListXMLCount+=1
Get(ListXML,ListXMLCount) ! Прочитали элемент
Value=ListXML.Node.getNodeValue()
То же самое - для значений типа CDATA и аналогичных
2. Если поле (например, CDATA) содержит переходы на новую строку, после считывания вместо '<13>' останется только '<10>'. Если необходимо, придётся дописать...
N10 Long
Code
ListXMLCount+=1
Get(ListXML,listXMLCount) ! Прочитали элемент
Value=ListXML.Node.getNodeValue()
! Замены <10> на <13>'
N10=1
Loop
N10=Instring('<10>',Value,1,N10)
If N10
Value=Value [1 : N10-1] & '<13>' & Value [N10+1 : Len(Value)]
N10+=2
Else
Break
End
End
Разумеется, это самый элементарный случай. Но он охватывает процентов 99 всех документов...
За пример спасибо. Буду разбираться.
А ссылка http://www.tacis-dipol.ru/fil/xml1251.zip что-то не открывается.
А ссылка http://www.tacis-dipol.ru/fil/xml1251.zip что-то не открывается.
[quote="Yufil"][quote="Geydar"]Сейчас актуально импортировать данные.
Чужая система может выдать мне XML и меня спрашивают, в каком виде его выдать. Я не могу ответить, потому-то не знаю как обработать.[/quote]
Движок форума изрядно "подкорректировал" мой текст...
Пропал End после Case и почему-то сочетание <13> <10> ( Chr(13) & Chr(10)) заменилось на Chr(13) .
Чужая система может выдать мне XML и меня спрашивают, в каком виде его выдать. Я не могу ответить, потому-то не знаю как обработать.[/quote]
Движок форума изрядно "подкорректировал" мой текст...
Пропал End после Case и почему-то сочетание <13> <10> ( Chr(13) & Chr(10)) заменилось на Chr(13) .