删除Delphi中的特定XML元素

时间:2015-06-13 13:39:34

标签: xml delphi delphi-7

我有一个xml文档,如下所示:

echo (intval($var) == $var) ? intval($var) : $var;

我正在使用Delphi 7。

如何删除XML文档中的所有 ExtensionData 元素?

1 个答案:

答案 0 :(得分:4)

您可以使用IXMLNodeList.Delete()IXMLNodeList.Remove()方法删除节点:

var
  Root: IXMLNode;
begin
  Root := XMLDocument1.DocumentElement;
  Root.ChildNodes.Delete('ElementData');
  for I := 0 to Root.ChildNodes.Count-1 do
    Root.ChildNodes[I].ChildNodes.Delete('ElementData');
end;

var
  Root, Child, Node: IXMLNode;
begin
  Root := XMLDocument1.DocumentElement;
  Node := Root.ChildNodes.FindNode('ElementData');
  if Node <> nil then Root.ChildNodes.Remove(Node);
  for I := 0 to Root.ChildNodes.Count-1 do
  begin
    Child := Root.ChildNodes[I];
    Node := Child.ChildNodes.FindNode('ElementData');
    if Node <> nil then Child.ChildNodes.Remove(Node);
  end;
end;

如果要删除所有ElementData元素而不管文档中的深度如何,则递归过程可以执行此操作:

procedure RemoveElementData(Node: IXMLNode);
var
  Root, Child: IXMLNode;
begin
  repeat until Node.ChildNodes.Delete('ElementData') = -1;
  for I := 0 to Node.ChildNodes.Count-1 do
    RemoveElementData(Node.ChildNodes[I]);
  end;
end;

begin
  RemoveElementData(XMLDocument1.DocumentElement);
end;