3

我已阅读此答案 ,但我不知道如何在我的案例中使用该示例。我有一个xml文件

 <Archive>                                  
  <Source>                               
     <Name>321</Name>                   
     <BatchID>123</BatchID>    
  </Source>                              
  <DataList>                             
     <Data>            
        <PN>AAAA</PN>
        <FN>1111</FN>
     </Data>
     <Data>            
        <PN>BBBB</PN>
        <FN>2222</FN>
     </Data>
  </DataList>                            
</Archive>

如何删除具有 PN=BBBB 的节点?


很抱歉,我想我的问题不清楚,我的错,我的问题是如何删除此部分:

 <Data>            
    <PN>BBBB</PN>
    <FN>2222</FN>
 </Data>

不仅是本节

<PN>BBBB</PN>

答案:感谢 Runner,我修改了他的一些代码

  DeleteNode := XMLDoc.DocumentElement.SelectSingleNode('/Archive/DataList/Data[PN="BBBB"]');
  DeleteNode.ParentNode.RemoveChild(DeleteNode);
4

1 回答 1

5

单程:

  DeleteNode := OmniXML.DocumentElement.SelectSingleNode('//[PN=''BBBB'']');
  DeleteNode.ParentNode.RemoveChild(DeleteNode);

您可以通过任何其他方式搜索它。请注意,上面的示例将仅选择第一个节点出现。但我建议你看看SimpleStorage

这是一组接口,极大地简化了 OmniXML 的使用。上面的例子将是:

SimpleStorage.Remove('//[PN=''BBBB'']');

SimpleStorage 通常还简化了使用 OmniXML 和 XML 的几乎所有其他方面。

于 2012-03-23T06:35:32.677 回答