Foros del Web » Programando para Internet » PHP »

leer XML

Estas en el tema de leer XML en el foro de PHP en Foros del Web. Hola tengo el sig codigo: $sqlresult = @sybase_query($sql,$conn); $XML.="<empleado>"; while($regdb = @sybase_fetch_array($sqlresult)) { $XML.="<elemento>"; $XML.="<vcPatEmp>".trim($regdb["vcPatEmp"])."</vcPatEmp>"; $XML.="<vcMatEmp>".trim($regdb["vcMatEmp"])."</vcMatEmp>"; $XML.="<vcNomEmp>".trim($regdb["vcNomEmp"])."</vcNomEmp>"; $XML.="<cRfcEmp>".trim($regdb["cRfcEmp"])."</cRfcEmp>"; $XML.="<siStatus>".trim($regdb["siStatus"])."</siStatus>"; $XML.="<vcCurp>".trim($regdb["vcCurp"])."</vcCurp>"; $XML.="</elemento>"; } $XML.="</empleado>"; @sybase_close($conn); echo ...
  #1 (permalink)  
Antiguo 18/11/2008, 11:01
 
Fecha de Ingreso: septiembre-2008
Mensajes: 11
Antigüedad: 15 años, 7 meses
Puntos: 0
leer XML

Hola tengo el sig codigo:

$sqlresult = @sybase_query($sql,$conn);
$XML.="<empleado>";

while($regdb = @sybase_fetch_array($sqlresult))
{
$XML.="<elemento>";
$XML.="<vcPatEmp>".trim($regdb["vcPatEmp"])."</vcPatEmp>";
$XML.="<vcMatEmp>".trim($regdb["vcMatEmp"])."</vcMatEmp>";
$XML.="<vcNomEmp>".trim($regdb["vcNomEmp"])."</vcNomEmp>";
$XML.="<cRfcEmp>".trim($regdb["cRfcEmp"])."</cRfcEmp>";
$XML.="<siStatus>".trim($regdb["siStatus"])."</siStatus>";
$XML.="<vcCurp>".trim($regdb["vcCurp"])."</vcCurp>";

$XML.="</elemento>";
}
$XML.="</empleado>";

@sybase_close($conn);

echo $XML;

y me imprime una salida asi:

<?xml version="1.0" encoding="UTF-8" ?>
- <empleado>
- <elemento>
<vcPatEmp>SANCHEZ</vcPatEmp>
<vcMatEmp>GONZALEZ</vcMatEmp>
<vcNomEmp>ADALBERTO</vcNomEmp>
<siStatus>1</siStatus>
</elemento>
</empleado>

Ahora, lo que quiero es leer <vcPatEmp>SANCHEZ</vcPatEmp> el valor osea SANCHEZ, quiero leerlo ya sea en una variable o en un arreglo, para despues poder manipular esos datos.

No esta en un archivo .xml.
Gracias.
  #2 (permalink)  
Antiguo 18/11/2008, 11:10
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Respuesta: leer XML

Cita:
Iniciado por mlth07 Ver Mensaje
No esta en un archivo .xml.
¿Accederás directamente a una URL?. SimpleXML con su función load_string() te servirá.
www.php.net/simplexml_load_string
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 18/11/2008, 11:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: leer XML

Hola mlth07,

Con SimpleXML puedes cargar el XML desde un string y manipularlo.

Saludos
  #4 (permalink)  
Antiguo 18/11/2008, 12:12
 
Fecha de Ingreso: septiembre-2008
Mensajes: 11
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: leer XML

Hola gracias, ya lo hace, en mi variable ya llevo la estructura, pero ahora como se lee esa estructura.
Gracias
  #5 (permalink)  
Antiguo 18/11/2008, 12:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: leer XML

Si lees los enlaces que te dejamos, lo haces con SimpleXML, en el Manual tienes muchos ejemplos.

Saludos
  #6 (permalink)  
Antiguo 18/11/2008, 13:15
 
Fecha de Ingreso: septiembre-2008
Mensajes: 11
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: leer XML

Pues ya lo intente de dos formas;

Primero asi:
echo $XML;

$estxml = simplexml_load_string($XML);
foreach ($estxml->elemento as $elemento) {
echo $elemento->vcPatEmp, '<br />';

}

Segundo:
foreach ($estxml->item as $elemento)
{
echo "<b>$elemento->vcPatEmp:</b> ";
echo "$elemento->vcMatEmp<br><br>\n";
}

son muy parecidos los metodos, pero me manda un error:

No se puede mostrar la página XML
No se puede ver la entrada XML con la hoja de estilo XSL. Corrija el error y haga clic en el botón Actualizar, o inténtelo de nuevo más tarde.
--------------------------------------------------------------------------------
No es válido en el nivel superior del documento. Error al procesar el recurso http://localhost:3570/conempleado.php?restore...

<?xml version="1.0" encoding="UTF-8"?><empleado><elemento><vcPatEmp>SANCHEZ</vcPatEmp><vcMa...

No se en donde poner el echo de la estructura, porque lo estoy poniendo debajo de todo mi codigo despues del echo $XML y no funciona solo me pone el echo. Aparte hice una unidad; pero no me muestra nada.

<?php
include 'ejemplo.php';

$estxml = simplexml_load_string($XML);
foreach ($estxml->elemento as $elemento) {
echo $elemento->vcPatEmp, '<br />';

}

?>

Esta bien lo que estoy haciendo y en donde pongo el codigo para leer la estructura.
Gracias
  #7 (permalink)  
Antiguo 18/11/2008, 13:52
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Respuesta: leer XML

Cita:
Iniciado por mlth07 Ver Mensaje
son muy parecidos los metodos, pero me manda un error:

No se puede mostrar la página XML
Sabrás ese no es un error de PHP, sino un aviso del navegador que intenta interpretar el XML no válido. ¿estás previamente enviando la cabecera indicando el contenido es XML?.

Y aunque no le encuentro sentido a construir y leer el XML en el mismo script, la solución deberá ser indicar al navegador es texto plano lo que enviarás. Igual deberías poderlo ver en tu código fuente se interprete o no. Repito: ese no es error de PHP.

Un saludo
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 18/11/2008, 15:11
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Respuesta: leer XML

El error del XML es porque al construir el archivo, queda de manera incorrecta por los echos que haces al final. Si lo que quieres es trabajar con el valor dentro de <vcPatEmp> en el mismo script, entonces puedes hacer algo asi:
Código php:
Ver original
  1. $sqlresult = @sybase_query($sql,$conn);
  2. $vcPatEmp = array(); //Inicializamos arreglo
  3. $XML.="<empleado>";
  4.  
  5. while($regdb = @sybase_fetch_array($sqlresult))
  6. {
  7. $XML.="<elemento>";
  8. $XML.="<vcPatEmp>".trim($regdb["vcPatEmp"])."</vcPatEmp>";
  9. $vcPatEmp[] = $regdb['vcPatEmp']; //Añadimos elementos al arreglo
  10. $XML.="<vcMatEmp>".trim($regdb["vcMatEmp"])."</vcMatEmp>";
  11. $XML.="<vcNomEmp>".trim($regdb["vcNomEmp"])."</vcNomEmp>";
  12. $XML.="<cRfcEmp>".trim($regdb["cRfcEmp"])."</cRfcEmp>";
  13. $XML.="<siStatus>".trim($regdb["siStatus"])."</siStatus>";
  14. $XML.="<vcCurp>".trim($regdb["vcCurp"])."</vcCurp>";
  15.  
  16. $XML.="</elemento>";
  17. }
  18. $XML.="</empleado>";
  19.  
  20. @sybase_close($conn);
  21.  
  22. echo $XML;

De esta manera $vcPatEmp es un arreglo con todos los valores de esa columna.
__________________
Sin Ideas
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 20:47.