Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia.
Tenho um xml assim:
<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>
<ticker>
<tipo>teste</tipo>
<titulo>teste2</titulo>
<texto>tx12</texto>
<foto>test3.jpg</foto>
<datainicio>26/6/2013</datainicio>
<datafim>28/6/2013</datafim>
</ticker>
<ticker>
<tipo>teste</tipo>
<titulo>teste2</titulo>
<texto>tx22</texto>
<foto>test4.jpg</foto>
<credito>c22</credito>
<datainicio>26/6/2013</datainicio>
<datafim>28/6/2013</datafim>
</ticker>
<ticker>
<tipo>teste</tipo>
<titulo>t3</titulo>
<texto>tx13</texto>
<foto>test2.jpg</foto>
<datainicio>26/6/2013</datainicio>
<datafim>4/7/2013</datafim>
</ticker>
<ticker>
<tipo>teste</tipo>
<titulo>t3</titulo>
<texto>bjhhhjhghg</texto>
<foto>news_slider/images/test4.jpg</foto>
<credito>kjkjk</credito>
<datainicio>26/6/2013</datainicio>
<datafim>4/7/2013</datafim>
</ticker>
<ticker>
<tipo>teste</tipo>
<titulo>t3</titulo>
<texto>bjhhhjhghg</texto>
<foto>news_slider/images/test4.jpg</foto>
<credito>kjkjk</credito>
<datainicio>26/6/2013</datainicio>
<datafim>4/7/2013</datafim>
</ticker>
</tickers>
Então eu quero remover um ou mais desses <ticker> se o valor do <titulo> for igual ao valor que eu passar via post (formulário).
Como faço?
Alguém sabe?
Então... aí não obtive a solução...
alguma idéia?
O que o ESerra esta dizendo é para não duplicar um topico.
OK. Mas alguma idéia que possa me ajudar?
Obrigado.
DOMDocument e DOMXPath são a solução. :yes:
$filename = 'file.xml';
$DOMDocument = new DOMDocument( '1.0', 'UTF-8' );
$DOMDocument->preserveWhiteSpace = false;
$DOMDocument->formatOutput = true;
$DOMDocument->load( $filename );
$DOMXPath = new DOMXPath( $DOMDocument );
$search = 't3';
$expression = sprintf( '//tickers/ticker/titulo[ text( ) = "%s" ]', $search );
$result = $DOMXPath->query( $expression );
if( $result->length > 0 )
{
foreach( $result as $DOMElement )
{
$DOMElementToRemove = $DOMElement->parentNode;
$DOMElement->parentNode->parentNode->removeChild( $DOMElementToRemove );
}
$DOMDocument->save( $filename );
}Gênio! Funcionou perfeitamente. Mais uma que aprendi...
Muitíssimo agradecido.
Abs
http://forum.imasters.com.br/topic/502007-remover-elemento-do-xml/ ?