В библиотеке расширяемого программирования Grom существует класс PropertyTree
, который позволяет загружать настройки и другие данные из XML-файлов.
В этом классе существуют 4 главных свойства: name
, text
, items
, children
.
Следующий пример поясняет сказанное:
<name item1="..." ... itemN="...">
<child1 .../>
<child2 .../>
...
<childN .../>
text
</name>
За счет того, что child
-элемент - это объект класса PropertyTree
, можно строить в памяти и загружать из XML-файлов любые иерархии.
Однако класс PropertyTree
не вполне адекватно представляет XML-файл в памяти. Дело в том, что text
в XML-файлах может быть "размазан" среди множества child
-элементов. Например:
<name item1="..." ... itemN="...">
text1
<child1 .../>
text2
<child2 .../>
text3
...
<childN .../>
textN
</name>
Если следовать формальному определению XML, то text
- это такой же узел, как и child
.
Кроме того, даже атрибут - item
- это child
-узел.
Т.е. XML должен быть построен следующим образом.
Существует базовый класс - XMLNode
. Он представляет собой любой узел XML-дерева. В нем есть список дочерних узлов. Дочерние узлы представляются производными классами:
XMLAttribute
-item
,XMLText
-text
,XMLElement
-child
,XMLComment
- коментарий,XMLCData
- любые данные в формате ASCII,XMLInstruction
- указание кодировки/схемы.
Необходимо изучить класс PropertyTree
в библиотеке Grom, а также интерфейсы библиотеки MSXML от Microsoft и создать в библиотеке Grom классы, реализующие полную поддержку XML. Написать тестовую программу, которая загружает XML в память, редактирует его и сохраняет на диск. Проверить правильность работы собственных классов с помощью классов MSXML. Таким образом, студенты ознакомятся с концепциями библиотеки Grom и одновременно изучат формат XML.