Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/09/2010, 07:00
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: simplexml como buscar nodo hijo especifico

Lo que sucede es que tienes que especificar algún atributo para que lo haga único. Por ejemplo
Código PHP:
Ver original
  1. <?php
  2. $string = <<<XML
  3. <foo>
  4.     <a id="1">
  5.        <b>
  6.           <c>foo</c>
  7.        </b>
  8.     </a>
  9.     <a id="2">
  10.        <b>
  11.           <c>bar</c>
  12.        </b>
  13.     </a>
  14. </foo>
  15. XML;
  16.  
  17. $xml = new SimpleXMLElement($string);
  18.  
  19. $id = 1;
  20. $result = $xml->xpath('//a[@id="' . $id . '"]/b/c');
  21. var_dump($result);
De esa forma puedes obtener el que quieras específicamente.

Edito:
También puedes usar condiciones. Por ejemplo, voy a tomar aquella etiqueta de <c> que tenga como valor foo y retonar el pariente <a> con toda su estructura
Código PHP:
Ver original
  1. <?php
  2. $string = <<<XML
  3. <foo>
  4.     <a id="1">
  5.         <b>
  6.             <c>foo</c>
  7.         </b>
  8.         <d>
  9.             <e>candy</e>
  10.         </d>
  11.     </a>
  12.     <a id="2">
  13.         <b>
  14.             <c>bar</c>
  15.         </b>
  16.     </a>
  17. </foo>
  18. XML;
  19.  
  20. $xml = new SimpleXMLElement($string);
  21.  
  22. $result = $xml->xpath('//c[.="foo"]/ancestor::a');
  23. var_dump($result);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 03/09/2010 a las 07:32