=PHP 5.0.0 * @filecharset utf-8 */ /** * Удаление узла xml * * @param SimpleXMLElement $xml * @param string XPath $path * @param string ('one'|'child'|'all') $multi * * Использование: * * Пример xml файла - http://ru2.php.net/manual/ru/ref.simplexml.php * * $xml = simplexml_load_file($xmlfile); * * //1. удаление строго 1 узла (без дочерних узлов) * // при этом $path должен указывать строго на 1 (уникальный) узел без дочерних элементов * removeNode($xml, '//movie/rating[@type="thumbs"]'); * * //2. удаление 1 узла (c дочерними узлами) * // при этом $path может указывать на любое количество узлов - удален будет только первый и * // со всеми дочерними узлами * removeNode($xml, '//characters', 'child') * * //3. удаление всех узлов (c дочерними узлами) * // при этом $path может указывать на любое количество узлов - удалены будут все * // узлы, которые вернул $path со всеми дочерними узлами * removeNode($xml, '//rating', 'all') * * $xml->asXML($xmlfile); * */ function removeNode(SimpleXMLElement $xml, $path, $multi='one') { $result = $xml->xpath($path); # для неправильного $path if (!isset($result[0])) return false; switch ($multi) { case 'all': foreach ($result as $r){ if (@isset($r[0])) unset($r[0]); } return true; case 'child': unset($result[0][0]); return true; case 'one': if (count($result[0]->children())==0 && count($result)==1) { unset($result[0][0]); return true; } default: return false; } } /** * Добавление узла xml * * @param SimpleXMLElement $xml * @param string XPath $path * @param string $node * @param string $value * * Использование: * * $xml = simplexml_load_file($xmlfile); * * // добавление тэга
со значением 'test' в документ * addNode($xml, '//*', 'p', 'test'); * * $xml->asXML($xmlfile); * */ function addNode(SimpleXMLElement $xml, $path, $node, $value='') { $result = $xml->xpath($path); # для неправильного $path if (!isset($result[0])) return false; foreach ($result as $r) $r->addChild($node, $value); return true; } /** * Обновление/добавление содержимого узла xml * (узлы не должны содержать потомков) * * @param SimpleXMLElement $xml * @param string XPath $path * @param string $value * * Использование: * * $xml = simplexml_load_file($xmlfile); * * // обновляет все узлы