2012-02-11 4 views
0

Может быть, на вопрос уже ответили каким-то образом или в другом во многих вопросах, но поскольку я новый bie в XML, я не могу понять это в своем проекте.xml DOM: удалить элемент с условием

У меня есть RSS (XML-файл) с этой структурой:

<rss> 
    <channel> 
      <item> 
       <title>some title</title> 
       <description> some descrp </description> 
       ... 
      </item> 
    </channel> 
</rss> 

Как я могу, в PHP, удалите часть элемента, когда заголовок равен некоторому значению? Благодарю.

EDIT1: У меня есть файл XML, хранящийся на моем веб-сервере.

ответ

0
$rss = " 
<rss> 
    <channel> 
      <item> 
       <title>some title</title> 
       <description> some descrp </description> 
      </item> 
      <item> 
       <title>some other title</title> 
       <description> some descrp </description> 
      </item> 
    </channel> 
</rss> 
"; 
$doc = new DOMDocument(); 
$doc->loadXML($rss); 
$xpath = new DOMXPath($doc); 
$els = $xpath->query('//title[text()="some title"]'); 
foreach($els as $el) 
{ 
    $parent = $el->parentNode; 
    $parent->parentNode->removeChild($parent); 
} 
echo $doc->saveXML(); 

Ищет точное совпадение.

пс: еще один метод, без XPath

$doc = new DOMDocument(); 
$doc->loadXML($rss); 
$els = $doc->getElementsByTagName('title'); 
for($i = $els->length-1; $i >= 0; $i--) 
{ 
    $el = $els->item($i); 
    if ($el->nodeValue == 'some title') 
    { 
     $parent = $el->parentNode; 
     $parent->parentNode->removeChild($parent); 
    } 
} 
echo $doc->saveXML(); 
+0

Спасибо за вашу помощь, но я хотел бы импортировать свой файл XML, это больше, чем больше я писал, это было просто показать, что это структура. Я пробовал $ doc-> loadXML ("new2.xml"); но кажется, что он не работает? – hafedh

+0

@hafedh: Вы должны использовать '$ doc-> load (" new2.xml ")'. – Saxoier

+0

@ Saxoier: Чрезмерно много, это работает, но поскольку оно не сохраняется в файле, новые «данные» отображаются на моей php-странице, но в файле XML все еще есть все элементы? – hafedh

Смежные вопросы