Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
tenho um xml com a seguinte estrutura:
<tickers>
<ticker>
<tipo>teste</tipo>
<titulo>testet</titulo>
<texto>tx1</texto>
<foto>test1.jpg</foto>
<datainicio>24/6/2013</datainicio>
<datafim>25/6/2013</datafim>
</ticker>
<ticker>
<tipo>teste</tipo>
<titulo>testet</titulo>
<texto>tx2</texto>
<foto>test2.jpg</foto>
<credito>c2</credito>
<datainicio>24/6/2013</datainicio>
<datafim>25/6/2013</datafim>
</ticker>
</tickers>
E quero remover um dos <ticker>. Para isso estou usando o seguinde código:
$titulo = $_POST['titulo'];
$doc = new DOMDocument();
$doc->load( 'news_slider/xml/xml01.xml' );
$books = $doc->getElementsByTagName( "ticker" );
foreach( $books as $book )
{
$chapter = $book->getElementsByTagName( "titulo" );
$authors = $book->getElementsByTagName( "titulo" );
$author = $authors->item(0)->nodeValue;
if($author = $titulo){
$oldchapter = $doc->removeChild($books);
echo $doc->saveXML();
}
}
MAS está dando o erro:
Catchable fatal error: Argument 1 passed to DOMNode::removeChild() must be an instance of DOMNode, instance of DOMNodeList given in /home/siste592/public_html/slider_jetmob/flash/excluirN.php on line 16
A linha 16:
$oldchapter = $doc->removeChild($books);
Alguém pode me ajudar?
Não funcionou.
Mudei pra isso aqui:
$titulo = $_POST['titulo'];
$doc = new DOMDocument();
$doc->load( 'news_slider/xml/xml01.xml' );
$books = $doc->getElementsByTagName( "ticker" );
foreach( $books as $book )
{
$chapter = $book->getElementsByTagName( "titulo" );
$authors = $book->getElementsByTagName( "titulo" );
$author = $books->item(0)->nodeValue;
if($author = $titulo){
$oldchapter = $book->removeChild($chapter);
echo $doc->saveXML();
e o erro foi esse:
Catchable fatal error: Argument 1 passed to DOMNode::removeChild() must be an instance of DOMNode, instance of DOMNodeList given in /home/siste592/public_html/slider_jetmob/flash/excluirN.php on line 16
Hein... afinal o que você está tentando fazer com esse XML?
O método getElementsByTagName sempre irá retornar NodeList, mas removeChild requer que seja um node, então você precisa usar item para pegar apenas um índice do NodeList:
$chapter->item(0)
O que quero fazer é remover um ou mais <ticker> se o valor do <titulo> daquele <ticker> for igual ao que passei no form e recuperei no post...
Tente $books->item(0), pois NodeList é tipo um array de DOMNodes, e com item(0) você retorna o índice 0 desse "array".