Foros del Web » Programando para Internet » PHP »

Problemas al extraer informacion de un XML

Estas en el tema de Problemas al extraer informacion de un XML en el foro de PHP en Foros del Web. Hola amigos: Aqui con un problema al poder extraer informacion de un archivo XML... Lo explico mejor tengo un archivo XML donde almacena informacion de ...
  #1 (permalink)  
Antiguo 13/03/2008, 14:30
 
Fecha de Ingreso: julio-2006
Mensajes: 23
Antigüedad: 17 años, 9 meses
Puntos: 0
Problemas al extraer informacion de un XML

Hola amigos:

Aqui con un problema al poder extraer informacion de un archivo XML...


Lo explico mejor tengo un archivo XML donde almacena informacion de usuarios de Jabberd 1.4.3

Ejemplo este es dparraga.xml donde almacena infomacion de un usuario..

- <xdb>
<password xmlns="jabber:iq:auth" xdbns="jabber:iq:auth">diego1146</password>
- <query xmlns="jabber:iq:register" xdbns="jabber:iq:register">
<username>dparraga</username>
<password xmlns="jabber:iq:auth">diego1146</password>
<x xmlns="jabber:x:delay" stamp="20080123T15:39:47">registered</x>
</query>
- <vCard prodid="-//HandGen//NONSGML vGen v1.0//EN" version="2.0" xmlns="vcard-temp" xdbns="vcard-temp">
<FN>Diego Parraga Menchaca</FN>
<NICKNAME>Diego</NICKNAME>
<BDAY>14 de Febrero</BDAY>
<URL />
- <EMAIL>
<USERID>[email protected]</USERID>
</EMAIL>
- <TEL>
<NUMBER>2412384-77765820-76241811-70553561</NUMBER>
</TEL>
- <ADR>
<STREET>Calle 9 #1049, Zona La Lomaz, Av. Final Buenos Aires</STREET>
<EXTADD />
<LOCALITY>La Paz</LOCALITY>
<REGION>Casado</REGION>
<PCODE />
<CTRY>Bolivia</CTRY>
</ADR>
- <ORG>
<ORGNAME>Ruat</ORGNAME>
<ORGUNIT>Sistemas y Comunicaciones</ORGUNIT>
</ORG>
<TITLE>Tecnico II-Operador de Soporte Interno y Servidores</TITLE>
<ROLE>Soporte Interno y Servidores</ROLE>
<DESC />
</vCard>
- <query xmlns="jabber:iq:roster" xdbns="jabber:iq:roster">
- <item jid="[email protected]" name="[email protected]" subscription="from" ask="subscribe">
<group>RRRHH</group>
</item>
- <item jid="[email protected]" name="ccussi" subscription="both">
<group>OPERACIONES</group>
</item>
- <item name="Nestor" jid="[email protected]" subscription="both">
<group>OPERACIONES</group>
</item>
- <item jid="[email protected]" subscription="to">
<group>OPERACIONES</group>
</item>
</query>
<query xmlns="jabber:iq:last" last="1205249833" xdbns="jabber:iq:last">Disconnected</query>
</xdb>



dicha informacion debe ser importada a la base de datos MySql, para lo cual estoy desarrollando un pequeño porgrama en PHP, logre leer los datos mas comunes del XML.

El codigo es
<?php
$doc = new DOMDocument();
$doc->load( 'xml/dparraga.xml' );
$mails = $doc->getElementsByTagName( "xdb" );
foreach( $mails as $mail )
{
$usuarios = $mail->getElementsByTagName( "username" );
$usuario = $usuarios->item(0)->nodeValue;
echo "Nombre del Usuario: ", $usuario;
echo"<br>";

$claves = $mail->getElementsByTagName( "password" );
$clave = $claves->item(0)->nodeValue;
echo "Clave: ", $clave;
echo"<br>";

$nomcomples = $mail->getElementsByTagName( "FN" );
$nomcomple = $nomcomples->item(0)->nodeValue;
echo "Nombre Completo: ", $nomcomple;
echo"<br>";

$nicks = $mail->getElementsByTagName( "NICKNAME" );
$nick = $nicks->item(0)->nodeValue;
echo "Nick Name: ", $nick;
echo"<br>";

$fechnas = $mail->getElementsByTagName( "BDAY" );
$fechna = $fechnas->item(0)->nodeValue;
echo "Fecha de Nacimiento: ", $fechna;
echo"<br>";

$usuids = $mail->getElementsByTagName( "USERID" );
$usuid = $usuids->item(0)->nodeValue;
echo "Usuario Jabberd: ", $usuid;
echo"<br>";

$telefs = $mail->getElementsByTagName( "NUMBER" );
$telef = $telefs->item(0)->nodeValue;
echo "Telefonos: ", $telef;
echo"<br>";

$direccs = $mail->getElementsByTagName( "STREET" );
$direcc = $direccs->item(0)->nodeValue;
echo "Direccion: ", $direcc;
echo"<br>";

$localidads = $mail->getElementsByTagName( "LOCALITY" );
$localidad = $localidads->item(0)->nodeValue;
echo "Localidad: ", $localidad;
echo"<br>";

$estcivs = $mail->getElementsByTagName( "REGION" );
$estciv = $estcivs->item(0)->nodeValue;
echo "Estado Civil: ", $estciv;
echo"<br>";

$paiss = $mail->getElementsByTagName( "CTRY" );
$pais = $paiss->item(0)->nodeValue;
echo "Pais: ", $pais;
echo"<br>";

$empresas = $mail->getElementsByTagName( "ORGNAME" );
$empresa = $empresas->item(0)->nodeValue;
echo "Empresa: ", $empresa;
echo"<br>";

$unidads = $mail->getElementsByTagName( "ORGUNIT" );
$unidad = $unidads->item(0)->nodeValue;
echo "Unidad: ", $unidad;
echo"<br>";

$cargos = $mail->getElementsByTagName( "TITLE" );
$cargo = $cargos->item(0)->nodeValue;
echo "Cargo: ", $cargo;
echo"<br>";

$rols = $mail->getElementsByTagName( "ROLE" );
$rol = $rols->item(0)->nodeValue;
echo "Rol: ", $rol;
echo"<br>";

$contactos = $mail->getElementsByTagName( "item" );
$i=1;
foreach( $contactos as $contacto )
{

$contacs = $contacto->getElementsByTagName( "group" );
$contac = $contacs->item(0)->nodeValue;
echo $i;
echo "Contacto: ", $contac;
echo"<br>";
$i=$i+1;
}

}
?>


Esta funcionando a la perfeccion sacando el nombre del usuario su clave... pero an al aprte de sacar los contactos del ususario es mi problema debido a que esta dentro de una etiquete item como pueden ver..
- <item jid="[email protected]" name="[email protected]" subscription="from" ask="subscribe">
<group>RRRHH</group>
</item>
- <item jid="[email protected]" name="ccussi" subscription="both">
<group>OPERACIONES</group>
</item>
- <item name="Nestor" jid="[email protected]" subscription="both">
<group>OPERACIONES</group>
</item>
- <item jid="[email protected]" subscription="to">
<group>OPERACIONES</group>
</item>


Y como ven tengo que sacar:
1. El contacto [email protected] y su nombre ccussi
2. Como ven hay varios item en el caso hay cuatro, entonces para los cuatro tengo que sacar su contacto y nombre que esta dentro de la etiquete <item ....>

Com pueden ver mi codigo solo casa al grupo a quien pertenece el contacto, pero no el contacto, ni el nombre...

Por eso recurro a la comunidad para que me pueden guiar o darme un ejemplo o que funcion puedo utilizar para poder sacar el contacto y nombre...

Les agradezco el tiempo que se toman para leer el mail.

Saludos
  #2 (permalink)  
Antiguo 13/03/2008, 16:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Problemas al extraer informacion de un XML

Trasladado a PHP General

Para leer los atributos puedes hacer esto:
Código PHP:
$contactos $mail->getElementsByTagName"item" );
$i=1;
foreach( 
$contactos as $contacto )
{

$contacs $contacto->getElementsByTagName"group" );
$contac $contacs->item(0)->nodeValue;
$usermail $contacts->getAttribute"jid" );
$username $contacts->getAttribute"name" );
echo 
$i;
echo 
"Contacto: "$contac;
echo
"<br>";
$i=$i+1;

Saludos.
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:21.