2011-02-02 163 views
0

我想从web.config文件中取消设置节点,但它似乎没有工作。任何人都知道我在做什么错了?如果有更好的答案,请让我知道?从simpleXML中删除节点

  $web_config = simplexml_load_file('web.config'); 

      $nodes = $web_config->children(); 

      $att_name = 'myMap'; 
      $value = '1'; 

      $map_node = $nodes[0]->xpath(sprintf('rewrite/rewriteMaps/rewriteMap[@name="%s"]/add[@value="%d"]', $att_name, $value)); 

      print_r($map_node); // this outpus the correct node 

      if (!empty($map_node)) { 
       unset($map_node) 
      } else { 
       printf('No maps with value: "%d" found', $value); 
      } 

      $web_config->asXML(); 
+0

这似乎是工作`未设置($节点[0] - > rewrite-> rewriteMaps);`但是我卡在属性值。我将如何获得具有正确属性(name = myMap)的rewriteMaps节点? – Pardoner 2011-02-03 00:18:42

+0

`$ map_node`是匹配的`add`元素的数组。你不想让数组不安全!查看重复的问题以了解如何取消设置SimpleXMLElement。 – salathe 2011-02-03 07:48:50

回答

-1
$web_config = new SimpleXMLElement('web.config',null,true); 
$map_node = $web_config->xpath(sprintf('//rewrite/rewriteMaps/rewriteMap[@name="%s"/add[@value="%d"]', 'myMap', 1)); 

if (!empty($map_node)) { 
    unset($map_node[0][0]); 
} 

$web_config->asXml()