Delphi7-使用OmniXML库操作XML文件
我有一个很大的XML文件,大约50兆,我试图使用这个库来操作XML文档 我不理解OmniXML中的演示 XML文件的结构如下所示:Delphi7-使用OmniXML库操作XML文件,xml,delphi,delphi-7,Xml,Delphi,Delphi 7,我有一个很大的XML文件,大约50兆,我试图使用这个库来操作XML文档 我不理解OmniXML中的演示 XML文件的结构如下所示: <rollercoaster build="0.1 (Dec 30 2010)" debug="no"> <settings name="roller coaster" sourcefile="rolcost.pas"> <descr
<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>
过山车管理功能
2010
阿尔特克
过山车用户功能
2010
阿尔特克
...... 然后继续
我想知道的是:
- 如何使循环显示StringGrid中的节点和子节点
- 如何从单个节点获取数据(用于调试目的)
- 如何选择设置节点的子节点
- 如何获取同一节点的列表以及如何分离节点“sears”
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:\0\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;