Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] DOMDocument y XML mal formado

Estas en el tema de DOMDocument y XML mal formado en el foro de PHP en Foros del Web. Hola, Tengo que analizar un XML, pero las siguientes líneas me dan problemas del tipo XML mal formado y por lo tanto la clase DOMDocument ...
  #1 (permalink)  
Antiguo 05/10/2013, 12:02
 
Fecha de Ingreso: julio-2005
Mensajes: 310
Antigüedad: 18 años, 9 meses
Puntos: 36
DOMDocument y XML mal formado

Hola,

Tengo que analizar un XML, pero las siguientes líneas me dan problemas del tipo XML mal formado y por lo tanto la clase DOMDocument me devuelve un FALSE cuando intento usar el método load() ... ¿Hay alguna forma de filtrar esas líneas o ignorarlas?

Código HTML:
<item sensor="thb0" cat="fc" unit="textde">Zunehmend_bew&amp;#246;lkt_mit_geringer_Temperatur&amp;#228;nderung._Niederschlag_m&amp;#246;glich_innerhalb_24_bis_48_Stunden.</item>
    <item sensor="thb0" cat="fc" unit="textdeiso">Zunehmend_bew�lkt_mit_geringer_Temperatur�nderung._Niederschlag_m�glich_innerhalb_24_bis_48_Stunden.</item>
    <item sensor="thb0" cat="fc" unit="textnl">Toenemende_bewolking_met_kleine_veranderingen_in_temperatuur._Neerslag_mogelijk_binnen_24_tot_48_uur.</item>
    <item sensor="thb0" cat="fc" unit="textit">Aumento_della_nuvolosita'_con_lieve_variazione_delle_temperature._Possibili_precipitazioni_entro_24/48_ore.</item>
    <item sensor="thb0" cat="fc" unit="textest">Pilvinev_ja_v�hese_temperatuurimuutusega._Sademete_v�imalus_24-48_tunni_jooksul.</item>
    <item sensor="thb0" cat="fc" unit="texthr">Pove&amp;#263;anje_naoblake_uz_manju_promjenu_temperature._Mogu&amp;#263;e_oborine_u_narednih_24_do_48_sati.</item> 
  #2 (permalink)  
Antiguo 05/10/2013, 12:39
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: DOMDocument y XML mal formado

Como tienes tu codigo?
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #3 (permalink)  
Antiguo 05/10/2013, 13:25
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: DOMDocument y XML mal formado

Para mí que es la codificación.
  #4 (permalink)  
Antiguo 05/10/2013, 15:47
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: DOMDocument y XML mal formado

Intenta colocando:


antes de cargar tu xml.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 06/10/2013, 04:07
 
Fecha de Ingreso: julio-2005
Mensajes: 310
Antigüedad: 18 años, 9 meses
Puntos: 36
Respuesta: DOMDocument y XML mal formado

Hola

Mi código es:

Código PHP:
public function setXPath($xmlDoc) {
    
$doc = new DOMDocument();
    
libxml_use_internal_errors(true); // He probado esto pero nada.
    
    
if (!$doc->load($xmlDoc)){
      
//ENVIAR EMAIL
      
      
return false;
    }
    return 
$this->_xpath = new DOMXPath($doc);
  } 
Sólo falla en uno de mis XML que contiene texto en alemán y entiendo que tiene algo que ver con la codificación. El XML que falla es:
http://meteovegadelcodorno.com/meteohub/all-sensors.xml

Saludos!
  #6 (permalink)  
Antiguo 06/10/2013, 10:05
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: DOMDocument y XML mal formado

A mi me funciona algo sencillo como esto con esa URL:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $doc = new DOMDocument();
  4. $doc->loadHTMLFile('http://meteovegadelcodorno.com/meteohub/all-sensors.xml');
  5. $xpath = new DOMXPath($doc);
  6. $year1 = $xpath->query('//data[@timeframe="year1"]/item');
  7.  
  8. foreach ($year1 as $item) {
  9.     echo $item->nodeValue . '<br />';
  10. }

Edito: intenta con utf8_encode() o iconv() para la codificación o usa loadHTMLFile para que no importe si está bien formado o no.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 06/10/2013 a las 10:19
  #7 (permalink)  
Antiguo 06/10/2013, 10:40
 
Fecha de Ingreso: julio-2005
Mensajes: 310
Antigüedad: 18 años, 9 meses
Puntos: 36
Respuesta: DOMDocument y XML mal formado

Hola,

Solucionado con el ejemplo de andresdzphp.

He cambiado
Código PHP:
$doc->load 
por
Código PHP:
$doc->loadHTMLFile 
y he cambiado
Código PHP:
 $con $this->_xpath->query("/meteohub/data[@timeframe='$timeframe']/item[@sensor='$sensor' and @cat='$cat' and @unit='$unit']"); 
por
Código PHP:
 $con $this->_xpath->query("//data[@timeframe='$timeframe']/item[@sensor='$sensor' and @cat='$cat' and @unit='$unit']"); 
Gracias!

Etiquetas: domdocument, xml
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 01:21.