Foros del Web » Programando para Internet » PHP »

php dom, problema con busqueda de node

Estas en el tema de php dom, problema con busqueda de node en el foro de PHP en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $dom = new DOMDocument ; @ $dom -> loadHTML ( $db ) ; $dompath = new DOMXPath ( $dom ...
  #1 (permalink)  
Antiguo 19/09/2014, 17:41
Avatar de danistrein  
Fecha de Ingreso: septiembre-2008
Ubicación: Salta Capital
Mensajes: 550
Antigüedad: 15 años, 7 meses
Puntos: 9
php dom, problema con busqueda de node

Código PHP:
Ver original
  1. $dom = new DOMDocument;
  2. @$dom->loadHTML($db);
  3. $dompath = new DOMXPath($dom);
  4.  
  5. $table = $dompath->query('//table');
  6. $table->item(0)->getELementsByTagName('tr')->item(0)->nodeValue

como pueden observar el código anda bien, el problema es cuando intento adentrarme en los node para buscar otro:
Código PHP:
Ver original
  1. $table->item(0)->getELementsByTagName('tr')->item(0)->getELementsByTagName('td')->item(0)->nodeValue
me devuelve NULL, alguien sabe por que?
__________________
Appones.net - www.appones.net
  #2 (permalink)  
Antiguo 19/09/2014, 17:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: php dom, problema con busqueda de node

Cita:
me devuelve NULL, alguien sabe por que?
Pues sin conocer el HTML/XML que estás tratando de leer, y sin saber cómo has depurado cada paso veo complicado que alguien sepa algo así no más.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 19/09/2014, 18:32
Avatar de danistrein  
Fecha de Ingreso: septiembre-2008
Ubicación: Salta Capital
Mensajes: 550
Antigüedad: 15 años, 7 meses
Puntos: 9
Respuesta: php dom, problema con busqueda de node

gracias pateketrueke, tu respuesta siempre ayuda mucho a los que no poseen tu conocimiento (¬¬)

lei el manual de dom, y por lo que logre entender es que:

crea la clase
Código PHP:
Ver original
  1. $dom = new DOMDocument;

carga la string u objecto dom element
Código PHP:
Ver original
  1. @$dom->loadHTML($db);

creo la clase xpath
Código PHP:
Ver original
  1. $dompath = new DOMXPath($dom);

busca todas las <table> que existen
Código PHP:
Ver original
  1. $table = $dompath->query('//table');

seleciono la primera <table>
Código PHP:
Ver original
  1. $table->item(0)

busco todos los <tr> que esten dentro de la primera <table>
Código PHP:
Ver original
  1. $table->item(0)->getELementsByTagName('tr')

seleciono el primer <tr> de la <table>
Código PHP:
Ver original
  1. $table->item(0)->getELementsByTagName('tr')->item(0)

busco todos los <td> que esten dentro del <tr>
Código PHP:
Ver original
  1. $table->item(0)->getELementsByTagName('tr')->item(0)->getELementsByTagName('td')

selecciono el primer <td> del <tr>
Código PHP:
Ver original
  1. $table->item(0)->getELementsByTagName('tr')->item(0)->getELementsByTagName('td')->item(0)

muestro el string que contiene el primer <td>
Código PHP:
Ver original
  1. $table->item(0)->getELementsByTagName('tr')->item(0)->getELementsByTagName('td')->item(0)->nudeValue



si tuviste tiempo de escribir para criticarme, supongo que no se te hace nada como colaborador indicarme donde esta mi error y como podría solucionarlo
__________________
Appones.net - www.appones.net
  #4 (permalink)  
Antiguo 19/09/2014, 19:50
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: php dom, problema con busqueda de node

Yo me refería a que me gustaría conocer el HTML/XML que estás leyendo, para probar tu código y ver que podría andar mal.

Tampoco te vamos a decir que anda mal de memoria.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 19/09/2014, 21:18
Avatar de danistrein  
Fecha de Ingreso: septiembre-2008
Ubicación: Salta Capital
Mensajes: 550
Antigüedad: 15 años, 7 meses
Puntos: 9
Respuesta: php dom, problema con busqueda de node

aaaaah! xD, disculpa, la variable $db contiene:
Código PHP:
Ver original
  1. <h1>TITULO1</h1>
  2. <table>
  3.     <tr>
  4.         <th>Imagen 1</th>
  5.         <th>Nombre/Imagen Mini/Descripcion</th>
  6.         <th>Datos 1</th>
  7.         <th>Datos 2</th>
  8.         <th>Datos 3</th>
  9.     </tr>
  10.     <tr>
  11.         <td><img src="imagen.png"></td>
  12.         <td>
  13.             <a href="#" class="notdone">Este es el nombre</a><img src="imagen.png"><br>
  14.             Forgotten Scroll to learn Arrow Rain. Moonlight Sentinel uses it. Can be acquired by level 83.
  15.         </td>
  16.         <td class="center">-</td>
  17.         <td class="center">-</td>
  18.         <td class="center">-</td>
  19.     </tr>
  20. </table>
  21.  
  22. <h1>TITULO 2</h1>
  23. <table>
  24.     <tr>
  25.         <th>Imagen 1</th>
  26.         <th>Imagen 2</th>
  27.         <th>Nombre/ImagenMini/Descripcion</th>
  28.         <th>Datos 1</th>
  29.         <th>Datos 2</th>
  30.         <th>Datos 3</th>
  31.         <th>Imagenes 1</th>
  32.         <th>Imagenes 2</th>
  33.         <th>Imagenes 3</th>
  34.         <th>Imagenes 3</th>
  35.     </tr>
  36.     <tr>
  37.         <td>
  38.             <a href="#">
  39.                 <img src="img/maps.png">
  40.             </a>
  41.         </td>
  42.         <td>
  43.             <img src="img/maps.png">
  44.         </td>
  45.         <td><a href="#">Divine Beast</a></td>
  46.         <td>80</td>
  47.         <td></td>
  48.         <td><img src="imagen.png"></td>
  49.         <td></td>
  50.         <td>
  51.             <div>
  52.                 <img src="imagen.png">
  53.                 <img src="imagen.png">
  54.                 <img src="imagen.png">
  55.             </div>
  56.         </td>
  57.         <td>
  58.             <div>
  59.                 <img src="imagen.png">
  60.                 <img src="imagen.png">
  61.                 <img src="imagen.png">
  62.             </div>
  63.         </td>
  64.     </tr>
  65. </table>

estoy probando la forma de entrar en cada node para así poder convertir cada tabla en un array, son en un total de 7 tablas, y no todas tienen la misma cantidad de columnas, alguna sintaxis que me recomiendes para lograrlo?

lo he tratado de hacer con eregi, preg_match_all y ahora con dom, pero se me hace difícil comprender como separar cada tabla en un array ej:
Código PHP:
Ver original
  1.     'categoria'=>'TITULO1'
  2.     'personas'=>array(
  3.         'Imagen 1'=>'urlimagen',
  4.         'Nombre'=>'nombre',
  5.         'ImagenMini'=>'urlimagen',
  6.         'Descripcion'=>'',
  7.         'Datos 1'=>'',
  8.         'Datos 2'=>'',
  9.         'Datos 3'=>''
  10.     );
  11. );
  12.  
  13.     'categoria'=>'TITULO2'
  14.     'personas'=>array(
  15.         'Imagen 1'=>'urlimagen',
  16.         'Imagen 2'=>'urlimagen',
  17.         'Nombre'=>'',
  18.         'ImagenMini'=>'urlimagen',
  19.         'Descripcion'=>'',
  20.         'Datos 1'=>'',
  21.         'Datos 2'=>'',
  22.         'Datos 3'=>''
  23.         'Imagenes 1'=>'urlimagen',
  24.         'Imagenes 2'=>'',
  25.         'Imagenes 3'=>'urlimage, urlimage, urlimage',
  26.         'Imagenes 4'=>'urlimage, urlimage, urlimage',
  27.     );
  28. );
__________________
Appones.net - www.appones.net

Etiquetas: dom, xpath
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 14:47.