Foros del Web » Programando para Internet » PHP »

Parsear con PHP Simple HTML DOM

Estas en el tema de Parsear con PHP Simple HTML DOM en el foro de PHP en Foros del Web. Hola, Estoy parseando un XML, uso para ello el PHP Simple HTML DOM con la siguiente formula básica... Código PHP: // Create DOM from URL or file $html  =  file_get_html ( ...
  #1 (permalink)  
Antiguo 13/07/2011, 12:08
 
Fecha de Ingreso: abril-2010
Mensajes: 76
Antigüedad: 14 años, 8 meses
Puntos: 0
Parsear con PHP Simple HTML DOM

Hola,

Estoy parseando un XML, uso para ello el PHP Simple HTML DOM con la siguiente formula básica...


Código PHP:
// Create DOM from URL or file
$html file_get_html('http://www.google.com/');

// Find all images 
foreach($html->find('div') as $element
       echo 
$element->plaintext'<br>'
La duda que tengo es la siguiente...

Resulta que el XML tiene varias etiquetas con el mismo nombre y sin ningun valor, clase... etc, el caso es que sin esto no se como filtrar... ¿ Como lo podría hacer para seleccionar la etiqueta siguiente ?
  #2 (permalink)  
Antiguo 13/07/2011, 12:27
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 19 años, 3 meses
Puntos: 55
Respuesta: Parsear con PHP Simple HTML DOM

bueno si estas usando un simpleXml puedes utilizar la funcion xpath y seleccionar los elementos como si fuera un selector CSS
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 14/07/2011, 04:10
 
Fecha de Ingreso: abril-2010
Mensajes: 76
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Parsear con PHP Simple HTML DOM

Gracias por la respuesta, pero ya lo tengo casi todo hecho con PHP Simple HTML DOM y solo me falta coger un ultimo elemento... y para ello necesito saber como hacer lo que explique en el primer post
  #4 (permalink)  
Antiguo 14/07/2011, 06:17
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años, 7 meses
Puntos: 27
Respuesta: Parsear con PHP Simple HTML DOM

Crear una variable inicializada en cero y la incrementas, de esa manera puedes recoger el valor de la etiqueta:
Código PHP:
Ver original
  1. <?php
  2. $i=0;
  3. html = file_get_html('http://www.google.com/');
  4.  
  5. // Find all images  
  6. foreach($html->find('div') as $element)  
  7. {
  8.        echo $element->plaintext. '<br>';  
  9.        $i++;
  10.  
  11.      echo "<button id='agregar' Onclick='alert('$i')'>Ver valor</button>";
  12. }
  13. ?>

Asi recoges el id del nodo que estas seleccionando
  #5 (permalink)  
Antiguo 14/07/2011, 10:32
 
Fecha de Ingreso: abril-2010
Mensajes: 76
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Parsear con PHP Simple HTML DOM

Gracias por responder, pero lo que me hace es mostrarme 2 veces todos los valores que hay en las etiquetas seleccionada y creo que no es exactamente lo que quiero.

Voy a poner parte del código en donde tengo el problema...

Código PHP:
<?php 
include('simple_html_dom.php');
$html file_get_html('38024.xml');
?> 
<table border="1"><tr><td>Dias</td>
<?php 
       
foreach($html->find('dia') as $element2)    
       echo 
'<td>' $element2-> fecha '</td>';
?> 
</tr><tr>
<td>
Prob
</td>
<?php
 
foreach($html->find('prob') as $element4)    
echo 
'<td>' $element4->outertext  '%' '</td>';
?> 
</tr></table>
<?php
       

?>
el XML tiene mas de 5 etiquetas llamadas <prob> yo quiero que empiece a mostrar a parir de la 3 <prob>.
  #6 (permalink)  
Antiguo 14/07/2011, 10:54
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años, 7 meses
Puntos: 27
Respuesta: Parsear con PHP Simple HTML DOM

Entonces deberias contar el numero de etiquetas <prob> antes de mostrarlas:

Código PHP:
Ver original
  1. <?php
  2. $doc = new DOMDocument;
  3. $doc->load($html);
  4. $x = $doc->documentElement;
  5. $y = $x->getElementsByTagName('prob');
  6. $conteo=$y->length;  
  7. echo $conteo;
  8.  
  9. //Ahora  un for debes mostrar:
  10.  
  11. (for $i=3; $i<=$conteo;  $i++;)
  12. {
  13. // aca muestras
  14.  
  15. }
  16. ?>
  #7 (permalink)  
Antiguo 14/07/2011, 11:27
 
Fecha de Ingreso: abril-2010
Mensajes: 76
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Parsear con PHP Simple HTML DOM

Lo he adaptado a mi código...

Código PHP:
<?php  
include('simple_html_dom.php'); 
$html file_get_html('38024.xml'); 
?>  
<table border="1"><tr><td>Dias</td> 
<?php  
       
foreach($html->find('dia') as $element2)     
       echo 
'<td>' $element2-> fecha '</td>'
?>  
</tr><tr> 
<td> 
Prob 
</td> 
<?php 
 
foreach($html->find('prob') as $element4)     
 
$conteo=$element4->length ;     
  for (
$i=3$i<$conteo;  $i++)
 
{
 echo 
'<td>' $element4->outertext  '%' '</td>';


?>  
</tr></table> 
<?php 
        

?>
Pero sigue sin funcionarme
  #8 (permalink)  
Antiguo 14/07/2011, 13:33
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años, 7 meses
Puntos: 27
Respuesta: Parsear con PHP Simple HTML DOM

Y donde estas haciendo el conteo?

El conteo se hace con la clase DOMDocument, no con la SimpleXml, que me parece que es la que estas utilizando

Código PHP:
Ver original
  1. $doc = new DOMDocument;
  2. $doc->load($html);
  3. $x = $doc->documentElement;
  4. $y = $x->getElementsByTagName('prob');
  5. $conteo=$y->length; *
  6. echo $conteo;
Asi como lo tienes si te muestra algo en conteo??
  #9 (permalink)  
Antiguo 14/07/2011, 14:17
 
Fecha de Ingreso: septiembre-2009
Ubicación: Neuquén
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 12
Respuesta: Parsear con PHP Simple HTML DOM

Creo que aclaro varias veces que esta usando PHP Simple HTML DOM
__________________
Amigos de Foros del Web: seamos más solidarios. ¡No dejemos que un tema se valla al final de las páginas con 0 (cero) respuestas! ¡Gracias por su ayuda! :-)
  #10 (permalink)  
Antiguo 14/07/2011, 15:52
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años, 7 meses
Puntos: 27
Respuesta: Parsear con PHP Simple HTML DOM

Puedes utilizar la la clase DOMDocument, sin necesidad de incluir nada, siempre y cuando la versión de PHP sea de 5...
  #11 (permalink)  
Antiguo 14/07/2011, 17:25
 
Fecha de Ingreso: abril-2010
Mensajes: 76
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Parsear con PHP Simple HTML DOM

El problema es que tengo el código terminado salvo por esta ultima cosa y he trabajado bastante, necesito imprescindiblemente que sea con PHP Simple HTML DOM.
  #12 (permalink)  
Antiguo 15/07/2011, 03:12
 
Fecha de Ingreso: abril-2010
Mensajes: 76
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Parsear con PHP Simple HTML DOM

He estado mirando y probando lo que comenta el manual

http://simplehtmldom.sourceforge.net/manual.htm
http://simplehtmldom.sourceforge.net/manual_api.htm
pero nada de nada, no veo nada claro de todas formas.
  #13 (permalink)  
Antiguo 15/07/2011, 16:55
 
Fecha de Ingreso: abril-2010
Mensajes: 76
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Parsear con PHP Simple HTML DOM

Al margen de la anterior duda, tengo otra del mismo tema ...

Con el siguiente código PHP estoy intentando que el valor que recoge a la hora de parsear, muestre una cosa o la otra. El caso es que con texto no me funciona, pero con números si.

Código
Código PHP:
<?php 
   
foreach($html->find('vien') as $element7)   {  
       echo 
'<td>';
        echo 
$element7-> outertext ();
 
$element7 $element7->__toString(); 
 
 
if (
$element7=="S") {
    print 
'<img src="prueba.gif" title="" alt="" />';
} elseif (
$element7=="NE") {
    print 
"prueba";

 
}
echo 
'</td>';
 
?>
He probado varias cosas y no ha funcionado entre ellas ... los 3 iguales, el trum y nada...

Última edición por tai007; 15/07/2011 a las 17:44

Etiquetas: html, parsear
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:37.