Здравствуйте, .
Окружение:Cla 6.1ABC, OS WinXP
Проблема такая... Нужно перегнать данные из xml-файла в queue.
И нужно это сделать весьма шустро... Разумеется это мой первый опыт со связкой clarion+xml, а файл по структуре весьма навороченный.
Граждане, плиз, может кто поделится примерчиком разбора xml-файла навороченной структуры(Attribut-based style). Оочень надо...
--
С уважением,
Макунин Алексей
pfrbr mailto:pfrbr@online.debryansk.ru
Написал: ClaList(2)
Xml parsing
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Насколько я понимаю, ты можешь рассчитывать на примерчик использования того или иного парсера (MSXML, клашкин почиканый, другой) либо на пример рукопашного разбора...
Последний вариант не рекомендую применять.
Что касается стандартных парсеров, посоветовал бы MSXML, либо че-нить из рекомендаций W3C... С реализацией проблем быть не должно, на все есть доки, читай и ваяй...
Если же надумаешь писать свой парсер (оптимизированный по ресурсам и скорости), можешь обращаться с вопросами, буквально годик назад занимался такой штукой, что-то смогу подсказать...
--
Best regards,
asn mailto:asn@arsis.ru
Написал: ClaList(2)
Последний вариант не рекомендую применять.
Что касается стандартных парсеров, посоветовал бы MSXML, либо че-нить из рекомендаций W3C... С реализацией проблем быть не должно, на все есть доки, читай и ваяй...
Если же надумаешь писать свой парсер (оптимизированный по ресурсам и скорости), можешь обращаться с вопросами, буквально годик назад занимался такой штукой, что-то смогу подсказать...
--
Best regards,
asn mailto:asn@arsis.ru
Написал: ClaList(2)
Речь идёт о почиканном. В Libsrc\cpxml.clw есть процедура ViewXML, котрая показывает структуру XML.
Если лень разбираться, маленький пример.
Сакральный смысл этого текста - описание в XML структуры некоего экрана.
Ну и так далее... А вопрос о чтении файлов в Windows-1251 уже обсуждался.
--
C уважением
Yuri
Адрес:yufil@mail.ru
Написал: ClaList(2)
Если лень разбираться, маленький пример.
Код: Выделить всё
<?xml version="1.0" encoding="windows-1251" ?>
<Screen Id="Y214" header="Затраты переменные, постоянные" type="E">
<controls>
<control type="0" id="0" No="0" file="27-1.JPG" w="377" h="224" fontname="Ms Sans Serif" fontsize="8" align="C" tiled="1">
<caption><![CDATA[Некий текст]]></caption>
</control>
<control type="200" id="1" No="1" x="19" y="14" w="339" h="194" fontname="Ms Sans Serif" fontsize="8">
<caption><![CDATA[Некий текст]]></caption>
</control>
</controls>
</Screen>
Код: Выделить всё
xmlDoc &Document,Auto
Nl &Nodelist,Auto
nnm &NamedNodeMap,auto
ANode &Node,Auto
AttrIndex Long
ListXML queue(DOMQueue) ! Очередь для считывания параметров
end
Code
xmlDoc &= XMLFileToDOM(FileName) ! Считали и пропарсили
FillDomQueue(XMLDoc,ListXML,1) ! Разобрали
Loop ListXML#=1 to Records(ListXML)
Get(ListXML,ListXML#) ! Прочитали элемент
Case lower(ListXML.Node.getNodeName()) ! Проверим имя
тэга
Of 'screen' ! <Screen>
Of 'controls' ! <Controls>
Of 'control' ! <Control>
Do ProcessControl
! Добавить запись о контроле
Of 'caption' ! <Caption>
! Поле CDATA находится в следующей записи
Get(ListXML,ListXML#+1)
Loc:Caption=ListXML.Node.GetNodeValue()
....
End
End
xmlDoc.Release()
Free(ListXML)
Return
ProcessControl Routine ! Разборка параметров тега
! Например <control type="3" id="9" No="7" file="A17.WMF" x="53" y="242" w="129" h="48">
nnm &= ListXML.Node.getAttributes()
if not nnm &= null
loop AttrIndex = 0 to nnm.getLength() - 1
Anode &= nnm.item(AttrIndex)
Case lower(ANode.GetNodename())
Of 'type'
ControlsQueue:Type=Anode.GetNodeValue()
Of 'id'
ControlsQueue:Id=Anode.GetNodeValue()
....
End
End
End
nnm.Release()
Exit
--
C уважением
Yuri
Адрес:yufil@mail.ru
Написал: ClaList(2)