Hola, estoy haciendo una script para leer un archivo XML con DOMXML, y mostrarlo en la web. Lo lee y muestra todas las etiquetas y atributos que se necesito correctamente. El problemas es al mostrar los datos leídos, que los acentos y 'ñ' no es capaz de interpretarlos bien, y los muestra mal, los cambia por otros caracteres.
Les pongo el código que utilizo para leer el xml.
$xmlPath = dirname(__FILE__) . "/";
if (!$dom = domxml_open_file($xmlPath . "/archivo.xml")) {
echo "Error al parsear el documento XML.....";
exit;
}
else {
$root = $dom->document_element();
$variables = $root->get_elements_by_tagname("name");
$iconos = $root->get_elements_by_tagname("icon");
$prediccion = $root->get_elements_by_tagname("forecast");
$localidad = $root->get_elements_by_tagname("location");
$i = 0;
foreach ($localidad as $localidad) {
$i = $i + 1;
$atrs = $localidad->attributes();
foreach ($atrs as $atributos2) {
$localidades = $atributos2->value;}
}
$i = 0;
$variable = 1;
foreach ($prediccion as $prediccion) {
if ($dias_predicciones == $i) {
$i = 0;
$variable = $variable + 1;
}
$i = $i + 1;
$atrs = $prediccion->attributes();
foreach ($atrs as $atributos) {
$atributo = $atributos->name;
$valor = $atributos->value;
if ($atributo == "value"){
if ($variable == 1) {
$var1 = $var1 + array($i=>$valor);
}
if ($variable == 2) {
$var2 = $var2 + array($i=>$valor);
}
if ($variable == 3) {
$var3 = $var3 + array($i=>$valor);
}
if ($variable == 4) {
$var4 = $var4 + array($i=>$valor);
}
if ($variable == 5) {
$var5 = $var5 + array($i=>$valor);
}
if ($variable == 6) {
$var6 = $var6 + array($i=>$valor);
}
if ($variable == 7) {
$var7 = $var7 + array($i=>$valor);
}
if ($variable == 8) {
$var8 = $var8 + array($i=>$valor);
}
if ($variable == 9) {
$var9 = $var9 + array($i=>$valor);
}
if ($variable == 10) {
$var10 = $var10 + array($i=>$valor);
}
if ($variable == 11) {
$var11 = $var11 + array($i=>$valor);
}
if ($variable == 12) {
$var12 = $var12 + array($i=>$valor);
}
if ($variable == 13) {
$var13 = $var13 + array($i=>$valor);
}
if ($variable == 14) {
$var14 = $var14 + array($i=>$valor);
}
if ($variable == 15) {
$var15 = $var15 + array($i=>$valor);
}
if ($variable == 16) {
$var16 = $var16 + array($i=>$valor);
}
if ($variable == 17) {
$var17 = $var17 + array($i=>$valor);
}
if ($variable == 18) {
$var18 = $var18 + array($i=>$valor);
}
if ($variable == 19) {
$var19 = $var19 + array($i=>$valor);
}
if ($variable == 20) {
$var20 = $var20 + array($i=>$valor);
}
}
}
}
}
Es decir, sólo utilizo las funciones:
- domxml_open_file() : para abrir el archivo XML
- get_elements_by_tagname() : para indicar el nombre de los nodos que quiero leer
- count() : para contar el nº de nodos iguales
- get_content() : para leer el dato de un nodo
Estoy utilizando php 4.3.10 y con apache 2.53
Bueno, espero puedan ayudarme.
Saludos y gracias.