2012-02-11 2 views
0

질문은 이미 여러 가지 질문에 대해 다른 방식으로 답변되어있을 수도 있습니다. 그러나 XML로 된 새로운 Bie이므로 내 프로젝트에서 이해할 수 없습니다.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(); 

정확하게 일치하는 것을 검색합니다.

PS : 당신의 도움에 대한 또 다른 방법, 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

관련 문제