Некоторые распространенные операции с OmniXML:
Загрузка документа из файла, из потока или строки
xml := CreateXMLDoc
xml.Load(FileName);
xml.LoadFromStream(XMLAsStream);
xml.LoadXML(XMLAsString)
Выбор одного узла (5-й дочерний элемент):
MyNode := XML.ChildNodes.Item[4];
MyNode := XML.SelectSingleNode('Node[5]');
Выбор с помощью XPath
MyNode := XML.SelectSingleNode('/MyNodes/SpecificNodes/Node[5]');
Выбор набора узлов
MyNodes := XML.SelectNodes('/MyNodes/SpecificNodes/Node');
Если вы загрузили с http://www.omnixml.com/download.html, то внутри находится каталог с именем demo, содержащий вседемос.Они объяснят вам практически все.
Если вы решите использовать SimpleStorage поверх OmniXML, позвольте мне показать вам, как будет выглядеть ваш верхний пример с помощью SimpleStorage.
xml := StorageFromFile(rssFileName)
for channel in xml.Elements('channel') do
begin
ListBox1.Items.Add('['+channel.Get('title')AsStringDef+']')
for Item in channel.Elements('item') do
ListBox1.Items.Add(' <'+ Item .Get('title')AsStringDef+'>')
end; //for iChannel
НетВы видите, сколько стандартного кода пропало (21 строка кода сокращена до 7 для той же функциональности).Нет необходимости проверять, существует ли узел и т. Д., И перечислители очень помогают.Я настоятельно рекомендую вам использовать этот подход, потому что он намного понятнее.