【问题标题】:PHP domDocument remove element by attribute valuePHP domDocument 按属性值删除元素
【发布时间】:2017-08-29 03:27:56
【问题描述】:

我想删除某个变量声明的属性值的元素。我有一个这样的 xml:

<configuration name="acl.conf" description="Network Lists">
  <network-lists><!-- IMS ALLOW ONLY -->
    <list name="test" default="deny">
      <node type="allow" cidr="11.11.11.101/32"/>
   </list>
   <list name="customer" default="deny" type="allow">
      <node type="allow" cidr="10.13.13.193/32"/>
      <node type="allow" cidr="10.13.13.194/32"/>
      <node type="allow" cidr="10.13.13.3/32"/>
      <node type="allow" cidr="10.13.13.2/32"/>
   </list>
  </network-lists>
</configuration>

任何人都可以帮助我编写 php 代码吗?我尝试过这样的事情,但它不起作用。

    <?php
$doc = new DOMDocument; 
$id = $_GET['id'];
$doc->load('acl.conf.xml');

$searchNode = $doc->getElementsByTagName( "node" );

foreach( $searchNode as $searchNode )
{
    $valueID = $searchNode->getAttribute('cidr');

    } 
?>

【问题讨论】:

  • 你能分享你的预期输出吗?
  • @SahilGulati 例如,我想删除 。所以输出将是 -lists> 配置>

标签: php xml domdocument


【解决方案1】:

假设 $_GET['id'] 是您要删除的 cidr 值,我会使用 XPath

$xpath = new DOMXPath($doc);
$nodes = $xpath->query('//node[@cidr="' . $id . '"]')
foreach ($nodes as $node) {
    $node->parentNode->removeChild($node);
}

【讨论】:

  • 它解决了,我用了你的 aswer 并且它有效!非常感谢
猜你喜欢
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-22
相关资源
最近更新 更多