推荐使用QXML来解析, 因为QXML可以不需要XML头: http://blog.qdac.cc/?cat=52
QXML下载地址可以使用SVN来获取最新版本: svn://www.qdac.cc/QDAC3
无需安装, 直接设置路径引用即可
解析代码Demo:
const
XNTS: array[TQXMLNodeType] of string = ('XML节点', '文本', '注释', 'CData');
procedure _ShowNodeInfo(APS: string; ANode: TQXMLNode);
var
i, j: Integer;
nXNA: TQXMLAttr;
begin
Memo2.Lines.Add(Format('%s节点名: %s 节点类型: %s 包含%d个子节点',
[APS, ANode.Name, XNTS[ANode.NodeType], ANode.Count]));
for j := 0 to ANode.Attrs.Count - 1 do
begin
nXNA := ANode.Attrs[j];
Memo2.Lines.Add(Format('%s|属性名: %s 属性值: %s', [APS, nXNA.Name, nXNA.Value]));
end;
for i := 0 to ANode.Count - 1 do
begin
case ANode.Items[i].NodeType of
xntText, xntComment, xntCData:
Memo2.Lines.Add(Format('%s[%s] 节点值: %s', [APS, XNTS[ANode.Items[i].NodeType], ANode.Items[i].Text]));
xntNode:
_ShowNodeInfo(APS + #9, ANode.Items[i]);
end;
end;
Memo2.Lines.Add('');
end;
var
nXDOC: TQXML;
nStr: string;
begin
nStr := '你要解析的XML文本';
nXDOC := TQXML.Create;
try
nXDOC.Parse(nStr);
_ShowNodeInfo('', nXDOC.Items[0]);
finally
nXDOC.Free;
end;
end;