Delphi简单的xml解析

时间:2017-12-06 12:08:11

标签: xml delphi

我需要从xml文件中解析出一些值。问题是 - 我必须用Delphi =(。 文件非常简单

<?xml version="1.0"?>
<Items version="1.0">
  <Item BackupFileName="d:\data.bak">
    <Rating Rate="TOP"/>
  </Item>
  <Item BackupFileName="d:\data2.bak">
    <Rating Rate="OTHER"/>
  </Item>
  ....
</Items>

我只需要一个包含此文件路径的字符串数组{“d:\ data.bak”,“d:\ data2.bak”,...}  我用谷歌搜索了一下,找到了一个像我想的那样的解决方案

 url := 'D:\Backups.xml';
  xml := CreateOleObject('Microsoft.XMLDOM') as IXMLDOMDocument;
  xml.async := False;
  xml.load(url); // or use loadXML to load XML document using a supplied string
  if xml.parseError.errorCode <> 0 then
    raise Exception.Create('XML Load error:' + xml.parseError.reason);

  nodes_row := xml.selectNodes('/Items');
  for i := 0 to nodes_row.length - 1 do
  begin
    node := nodes_row.item[i];
    result := node.selectSingleNode('Item').text;
end;

但结果似乎总是无效的。您能为此提供或推荐一个简单的解决方案吗?

1 个答案:

答案 0 :(得分:0)

使用IXMLNode.Attributes属性或IXMLNode.AttributeNodes属性,因为您的节点不包含文本,实际上您正在查找属性文本。