Delphi 7 – 使用OmniXML库操作XML文件
发布时间:2020-12-15 09:33:23 所属栏目:大数据 来源:网络整理
导读:我有一个大的 XML文件,大约50兆,我试图使用 OmniXML库来操作XML文档. 我不明白OmniXML中的演示…… XML文件的结构如下: rollercoaster build="0.1 (Dec 30 2010)" debug="no" settings name="roller coaster" sourcefile="rolcost.pas" descriptionRoller C
我有一个大的
XML文件,大约50兆,我试图使用
OmniXML库来操作XML文档.
我不明白OmniXML中的演示…… XML文件的结构如下: <rollercoaster build="0.1 (Dec 30 2010)" debug="no"> <settings name="roller coaster" sourcefile="rolcost.pas"> <description>Roller Coaster admin function</description> <year>2010</year> <manufacturer>ArtTeck</manufacturer> <sears name="sears.uk" size="1024" mda="87117ba5082cd7a615b4ec7c02dd819" region="england" set1="25d"/> <sears name="sears.dk" size="1056" mda="326dbbf94c6fa2e96613dedb53702f8" region="denmark" set1="25d"/> <sears name="sears.gr" size="6802" mda="01b4c38108d9dc4e48da4f8d5821377" region="greece" set1="65d"/> </settings> <settings name="roller coaster2" sourcefile="rolcost2.pas"> <description>Roller Coaster user function</description> <year>2010</year> <manufacturer>ArtTeck</manufacturer> </settings>...... and goes on </rollercoaster> 我想知道的事情是: >如何使循环显示StringGrid中的节点和子节点. 解决方法uses OmniXML,OmniXMLUtils; procedure TForm28.FormCreate(Sender: TObject); var descNode: IXMLNode; iNode : integer; node : IXMLNode; nodeList: IXMLNodeList; xml : IXMLDocument; begin xml := CreateXMLDoc; if XMLLoadFromFile(xml,'c: roller.xml') then begin // node enumeration in D2005+ //for node in XMLEnumNodes(xml,'/rollercoaster/settings') do // lbLog.Items.Add(GetNodeTextStr(node,'description')); // node enumeration in D7 and older nodeList := xml.SelectNodes('/rollercoaster/settings'); for iNode := 0 to nodeList.Length - 1 do begin node := nodeList.Item[iNode]; lbLog.Items.Add(GetNodeTextStr(node,'description')); end; // selecting a single node with specified attribute name node := xml.SelectSingleNode('/rollercoaster/settings[@name="roller coaster2"]'); // accessing subnode text lbLog.Items.Add(GetNodeTextStr(node,'description')); // accessing subnode text,alternative way descNode := node.SelectSingleNode('description'); lbLog.Items.Add(GetNodeText(descNode)); // accessing node attribute lbLog.Items.Add(GetNodeAttrStr(node,'sourcefile')); end; end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |