2011-02-02 219 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()