DOMXPath - удаление узла

soulfly

Новичок
DOMXPath - удаление узла

Друзья, нужна помощь. Есть XML:

PHP:
<links>
    <item> 
	<id>1</id>
        <title>PHP Weekly: Issue # 172</title>  
        <link>[url]http://www.zend.com/zend/week/week172.php[/url]</link>  
        <description>blablabla</description>
    </item>
    <item>  
	<id>2</id>
        <title>Tutorial: Develop rock-solid code in PHP: Part three</title>  
        <link>[url]http://www.zend.com/zend/tut/tut-hatwar3.php[/url]</link>  
        <description>blablablablablablablablablablablablablablabla</description>
   </item>
   ...
   ...
</links>
Мне необходимо организовать поиск и удаление <item> по значению <id>. Грубо говоря delete
from ... where id=$x


Очень прошу помочь мне с решением такой задачи.
 

soulfly

Новичок
Итак, нашел решение, пусть и не очень красивое:

PHP:
function DelLink ($_id) {

	$dom = new DomDocument();
	$dom->load("..\data\links.xml"); 

	$item = $dom->documentElement;

	$xp = new DOMXPath($dom);

	$count=0;

	foreach($xp->query("/links/item/id") as $node1) {
		if ($node1->textContent == $_id) {
			$del = $item->getElementsByTagName('item')->item($count);
			$item->removeChild($del);
		}
		$count++;
	}
	$dom->save("..\data\links.xml");
}
 

faithless.man

Новичок
ответ конечно не по теме
но будет разумнее использовать id как аттрибут тега item
тогда и процедура удаления/поиска будет проще
типа так: /links/item[@id = твоё значение]
а затем применяем DOM для удаления узла
 

soulfly

Новичок
Да в том то и дело, что так правильней :) Но изменять формат xml - не в моей компетенции :)
 

alekciy

Новичок
Значит стоит поднять вопрос изменения DTD (XMLShema) с целью введения в него атрибута id типа ID.
 

soulfly

Новичок
Возможно, но задача решена, DTD на данный момент менять не имеет смысла :)
 
Сверху