【问题标题】:How to delete a child node using OmniXML?如何使用 OmniXML 删除子节点?
【发布时间】:2011-09-29 09:09:37
【问题描述】:

我想删除rowpath 部分中带有pathid="2" 的行...

<?xml version="1.0" encoding="utf-8"?>
<LostPath Condition="Active" Selected="train.exe" FullPathOfSelected="D:\mygames\arcade\train\" Selected="0">
  <rowdir Name="train.exe" GamePath="D:\mygames\arcade\train\" Selected="0" />
  <rowdir Name="othelo.exe" GamePath="D:\mygames\arcade\othello\" Selected="3"/>
  <rowpath Name="train.exe" PathId="1" LevelPath="D:\mygames\arcade\train\levelpack1" levelsFound="27" />
  <rowpath Name="train.exe" PathId="2" LevelPath="D:\mygames\arcade\train\levelpack21" levelsFound="19" />
  <rowpath Name="othelo.exe" PathId="0" LevelPath="D:\mygames\arcade\othelo\levelpack1" levelsFound="11" />
</LostPath>

我该怎么做?

【问题讨论】:

    标签: delphi delphi-7 omnixml


    【解决方案1】:

    尝试使用它。

    uses
      OmniXML, OmniXMLUtils;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      XMLNode: IXMLNode;
      XMLDocument: IXMLDocument;
    begin
      XMLDocument := CreateXMLDoc;
      if XMLLoadFromFile(XMLDocument, 'XMLFile.xml') then
      begin
        XMLNode := XMLDocument.SelectSingleNode('/LostPath');
        DeleteNode(XMLNode, 'rowpath[@PathId="2"]');
        XMLDocument.Save('XMLFile.xml');
      end;
    end;
    

    【讨论】:

    • 谢谢你,我的朋友工作得很好。我还有一个问题。如果我想用 name="train" 擦除行路径的所有节点,我该怎么做..
    【解决方案2】:

    删除具有相同属性值的所有节点的方法很少。这是其中之一。但是请注意,这篇文章不回答这个问题。应该作为另一个问题提出。

    uses
      OmniXML, OmniXMLUtils;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      XMLNode: IXMLNode;
      XMLDocument: IXMLDocument;
    begin
      XMLDocument := CreateXMLDoc;
      if XMLLoadFromFile(XMLDocument, 'XMLFile.xml') then
      begin
        XMLNode := XMLDocument.SelectSingleNode('/LostPath');
        DeleteAllChildren(XMLNode, 'rowpath[@Name="train.exe"]');
        XMLDocument.Save('XMLFile.xml');
      end;
    end;
    

    【讨论】:

    • 当我这样做时,我得到一个“XMLEnumNodes undeclered identifier”,但我有 OmniXMLUtils 在我的使用中...我有 delphi 7 我认为 for...in 在 delphi 中不起作用7 点对吗?
    • @azrael11,是的,你是对的。抱歉,我错过了 Delphi 7 标签。我会更新答案,但稍后也会将其删除,因为这应该为将来寻找此特定问题的用户单独询问。
    • 当我这样做时,我得到一个错误,“位置 52 的语法无效”我不明白...
    • @azrael11,请将其作为另一个问题发布,以帮助将来遇到同样问题的人。同时检查 [] 括号的数量是否正确,因为只有当表达式中的这些括号有问题时才会引发此错误。
    • 拜托我是新来的我必须做的...是我的事情还可以 1. 提出一个新问题 2.我如何复制粘贴您的答案...对不起,我说我是新来的……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多