Foros del Web » Programando para Internet » PHP »

Warning al leer XML con DOMDocument

Estas en el tema de Warning al leer XML con DOMDocument en el foro de PHP en Foros del Web. Buenas a todos, gracias desde ya por echarle un ojo a este tema, que me está volviendo loco. No sé si fui muy acertado con ...
  #1 (permalink)  
Antiguo 24/05/2011, 10:57
Avatar de Ale_VH  
Fecha de Ingreso: abril-2011
Ubicación: Barcelona
Mensajes: 21
Antigüedad: 13 años
Puntos: 0
Warning al leer XML con DOMDocument

Buenas a todos, gracias desde ya por echarle un ojo a este tema, que me está volviendo loco. No sé si fui muy acertado con el título, pero bueno, ahora explico mejor el problema que tengo.
Tengo un php que lee unos xml que tengo. En el directorio donde estan los archivos php, entre los cuales esta el que lee los archivos xml, hay un subdirectorio que se llama "noticias" que a su vez tiene otro subdirectorio que se llama "img". Dentro del directorio de "noticias" se almacenan los archivos xml con las noticias y las rutas de las imágenes de cada noticia, las cuales se almacenan en el subdirectorio de noticias que indiqué (el que se llama "img"). Bien el tema es que le digo con em el index.php que mire dentro del directorio "noticias" y que me muestre en pantalla el contenido de los archivos xml. Entre medio le digo que pase por alto los "." y los ".." y tambien le digo que si encuentra otra cosa QUE SEA un subdirectorio (como es el caso de "img"), que no le de bola, pero eh ahí el problema, se pasa mis indicaciones por las pel..., quizás me faltó algo, quizás no me expliqué al php bien, no sé, ya no sé donde mirar. Bueno les dejo el código para que vean si ven algo extraño. Más abajo les pego el mensaje de error que me da. Esto es el código de mi index.php:

<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//ES" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<link rel="stylesheet" type="text/css" href="general.css"/>
</head>
<body>
<?php
$dir = "noticias";
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
if (($xml = readdir($dh)) !== false) {
$files=count(glob("noticias/{*.xml}",GLOB_BRACE));
if($files>0){
while (($xml = readdir($dh)) !== false){ //mientras haya archivos .xml va a iterar el directorio
if($xml=="."||$xml==".."){ //evita los que tengan nombre "." y/o ".."
}
else{
if(!is_dir($xml)){ //evita los subdirectorios
$noticia=new DOMDocument();
##### $noticia->load("noticias/".$xml); ##### //abre el primer archivo .xml que haya
$root=$noticia->getElementsByTagName("noticias"); //recupera el root
foreach($root as $news){
$nuevanoticia=$news->getElementsByTagName("nuevanoticia"); //recupera TODOS los tags de nuevanoticia que haya
count($nuevanoticia);
foreach($nuevanoticia as $elem){ //el usuario no hace falta
$titulo=$elem->getElementsByTagName("titulo");
$subtitulo=$elem->getElementsByTagName("subtitulo");
$imagen=$elem->getElementsByTagName("imagenpath");
$articulo=$elem->getElementsByTagName("articulo");
$utf8titulo = utf8_decode($titulo->item(0)->nodeValue);
$utf8subtitulo = utf8_decode($subtitulo->item(0)->nodeValue);
$utf8imagenpath = utf8_decode($imagen->item(0)->nodeValue);
$utf8articulo = utf8_decode($articulo->item(0)->nodeValue);
?>
<div id="mininoticia">
<div id="minitexto">
<h1><?php echo $utf8titulo; ?></h1>
<h2><?php echo $utf8subtitulo; ?></h2>
<p><?php echo $utf8articulo; ?></p>
</div>
<div id="miniimg">
<img src="<?php echo $utf8imagenpath; ?>"/>
</div>
</div>
<?php
}
}
}
}
}
}else{
echo "<p>A&uacute;n no hay archivos de noticias.</p>";
}
}
closedir($dh);
}
}
?>
</body>
</html>

y el mensaje de error que me da es:

( ! ) Warning: DOMDocument::load(C:\wamp\www\DIARIO PHP & XML\noticias\img) [domdocument.load]: failed to open stream: Permission denied in C:\wamp\www\DIARIO PHP & XML\index.php on line 23
Call Stack
# Time Memory Function Location
1 0.0027 387376 {main}( ) ..\index.php:0
2 0.0136 392464 DOMDocument->load( ) ..\index.php:23

( ! ) Warning: DOMDocument::load() [domdocument.load]: I/O warning : failed to load external entity "C:\wamp\www\DIARIO PHP & XML\noticias\img" in C:\wamp\www\DIARIO PHP & XML\index.php on line 23
Call Stack
# Time Memory Function Location
1 0.0027 387376 {main}( ) ..\index.php:0
2 0.0136 392464 DOMDocument->load( ) ..\index.php:23

para que ahorren tiempo, les dejo señalada la linea que me dice que esta mal con unos ######. Ya sé que la solución más rápida, simple y fácil es borrar el subdirectorio img y ponerlo en otro lado, pero quiero saber por qué no me hace caso e intenta leer el directorio que está claro que le dije que no lo hiciera (o al menos yo lo veo claro, a menos que no sea la sintaxis correcta). Bueno gente, gracias por la ayuda!

Etiquetas: Ninguno
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 18:57.