Ver Mensaje Individual
  #332 (permalink)  
Antiguo 06/05/2011, 16:43
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: Juego: "¿Dónde está el error?"

Ya por fin, ok este es el ejercicio, cuando yo hago esto
Código PHP:
Ver original
  1. $xml = '<foo>
  2.     <candy att="fruits">fruits</candy>
  3.     <candy att="vegetable">vegetable</candy>
  4.     <candy att="pizza">pizza</candy>
  5.     <candy att="pizza">pizza</candy>
  6.     <candy att="twix">twix</candy>
  7. </foo>';
  8.  
  9. $obj = new SimpleXMLElement($xml);
  10. foreach($obj->xpath('//candy[not(@att=preceding-sibling::candy/@att)]/@att') as $v){
  11.     echo $v->att . '<br />';
  12. }
Imprime:

fruits
vegetable
pizza
twix

Evitando que se repitan. Pero si hago esto
Código PHP:
Ver original
  1. <?php
  2. $xml = '<foo>
  3.     <bar>
  4.         <baz>
  5.             <candy att="fruits">fruits</candy>
  6.         </baz>
  7.     </bar>
  8.     <bar>
  9.         <baz>
  10.             <candy att="vegetable">vegetable</candy>
  11.         </baz>
  12.     </bar>
  13.     <bar>
  14.         <baz>
  15.             <candy att="pizza">pizza</candy>
  16.         </baz>
  17.     </bar>
  18.     <bar>
  19.         <baz>
  20.             <candy att="pizza">pizza</candy>
  21.         </baz>
  22.     </bar>
  23.     <bar>
  24.         <baz>
  25.             <candy att="twix">twix</candy>
  26.         </baz>
  27.     </bar>
  28. </foo>';
  29.  
  30. $obj = new SimpleXMLElement($xml);
  31. foreach($obj->xpath('//candy[not(@att=preceding-sibling::candy/@att)]/@att') as $v){
  32.     echo $v->att . '<br />';
  33. }
Imprime:

fruits
vegetable
pizza
pizza
twix

Mostrando los que se repiten. ¿Por qué y cómo se puede solucionar en una sola línea usando xpath una sola vez?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos