ilippe 0 Denunciar post Postado Dezembro 16, 2010 Olá pessoal. Ajudem-me please! Resumo: Quero localizar um node e alterar o seu atributo, estou tentando fazer isso com simplexml e xpath, mas se você souber fazer com o DOM pode ser tb. xml: <?xml version="1.0" encoding="utf-8"?> <agenda> <dados id="1" nome="imaster" site="forum.imasters.com.br"/> <dados id="2" nome="uol" site="www.uol.com.br"/> </agenda> Para alterar um atributo com simplexml uso: $xml = simplexml_load_file('t.xml'); $xml->dados['nome'] = 'Forum imaster'; echo $xml->asXML(); Mas com esse código eu altero o primeiro node do xml. Como faço para localizar o node com "id=2" e alterar o "nome"? Compartilhar este post Link para o post Compartilhar em outros sites
ilippe 0 Denunciar post Postado Janeiro 4, 2011 Já consegui.. Ai uma functionzinha.. function alteraAttribute($XML, $LINE, $ID, $ATTRIBUTE) { $xmlDoc = new DOMDocument(); $xmlDoc->preserveWhiteSpace = true; $xmlDoc->load($XML); $xpath = new DOMXpath($xmlDoc); $nodeList = $xpath->query(sprintf('%s[@title="%s"]', $LINE, $ID)); foreach ($nodeList as $element) { foreach ($ATTRIBUTE as $attribute => $valor) { $element->setAttribute($attribute, $valor); } } $xmlDoc->save($XML); if (option){ pbaxml_info(option, TitleBanner); } } $NewAttribute = array ('link' => $_POST['newlink'], 'src' => $_POST['newimagem'], 'title' => $_POST['newlink']); alteraAttribute('arquivo.xml', 'item', 'NOMEDONODE', $NewAttribute); $XML = O arquivo XML $LINE = O promeiro nome do NODE que procura (exemplo: <item>) $ID = O nome do NODE (exemplo: <item title="NOMEDONODE") $ATTRIBUTE = O atributo que deseja alterar. Compartilhar este post Link para o post Compartilhar em outros sites