我正在寻找一些实际工作的示例代码,以使用普通的omnixml(或omnixmlutils)单元读取xml。我不想使用tomnixmlwriter类,正如其他地方所解释的,而是想使用纯delphi代码加载xml文件。
我搜索了omnixml站点,但是那里的示例和不存在的一样好。
提前谢谢。

最佳答案

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的目录,其中包含所有的demo。他们几乎会向你解释一切。
如果您决定在omnixml的基础上使用simplestorage,那么让我向您展示一下使用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行相同的功能)。不需要检查节点是否存在等。枚举器也有很大帮助。我强烈建议你使用这种方法,因为它非常清晰。

10-08 13:15