Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/09/2008, 01:35
Avatar de angel_dope
angel_dope
 
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 22 años, 5 meses
Puntos: 8
Exclamación Busquedas sobre archivo XML

Hola a todos, tengo que hacer unas búsquedas sobre un archivo XML que tiene la siguiente estructura:

Código PHP:
<?xml version="1.0" encoding="utf-8"?>
<Integracion Fecha="16/06/2008 10:11:43" FechaInicial="01/01/2008" FechaFinal="16/06/2008" DescargaAnulados="True" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../xml/integracion.xsd">
<Alumnos Accion="Nuevos">
<Alumno NIF="00000000B" FechaAlta="18/06/2008" Nombre="Nuevo usuario" Apellidos="Nuevo usuario" Codigo="usuario" Password="f8032d5cae3de20fcec887f395ec9a6a" Titulacion="" FechaNacimiento="" Direccion="" Localidad="" Provincia="" CodigoPostal="0" Pais="ESPAÑA" Nacionalidad="ESPAÑA" Telefono="963258741" Fax="" Movil="60000000" CorreoElectronico="[email protected]" Habilitado="Sí" />
</Alumnos>
 <Alumnos Accion="Modificado">
<Alumno NIF="11111111R" FechaAlta="20/06/2007" FechaModificacion="18/06/2008" Nombre="Alumno1" Apellidos="Pruebas Adapting" Codigo="adaptingalumno1" Password="009371e6669d3c2485fb4dd08bfba5af" Titulacion="" FechaNacimiento="" Direccion="valencia" Localidad="valencia" Provincia="Valencia" CodigoPostal="46000" Pais="ESPAÑA" Nacionalidad="ESPAÑA" Telefono="9123121" Fax="789653222" Movil="912311" CorreoElectronico="[email protected]" Habilitado="Sí" />
<Alumno NIF="111111C" FechaAlta="30/11/1999" Nombre="AZULEJERA TÉCNICA" Apellidos=" S.A. (AZTECA)" Codigo="A12007472" Password="870158e5635fddf4ac29085f2351648d" Titulacion="" FechaNacimiento="30/11/1999" Direccion="CTRA. xxxxxxxx, KM. 19'7" Localidad="CASTELLÓN" Provincia="" CodigoPostal="12110" Pais="ESPAÑA" Nacionalidad="ESPAÑA" Telefono="xxxxxxx" Fax="" Movil="" CorreoElectronico="[email protected]" Habilitado="Sí" />
     </Alumnos>
 <Alumnos Accion="Borrados">
           <Alumno NIF="A22222222" Nombre="aaaaaaaa, S.A. " Apellidos="" FechaBorrado="18/06/2008" />
 </Alumnos>
<Cursos Accion="NuevosModificado">
  </Curso>
 </Cursos>
    <Matriculas Accion="matriculas">            
 </Matriculas>
</Integracion>
Hace tiempo trabajé con algo parecido y tenia el siguiente código para leer el archivo y sacar cuantos nodos habia y después recorrerlos:

Código PHP:
'Ahora leemos el xml creado en el paso anterior
set objXml = server.CreateObject("MSXML2.DOMDocument")
objxml.async = false

Aqui cargamos el archivo en el objeto
objxml
.load(server.MapPath("./tmp/"&Request.ServerVariables("Remote_Addr")&".xml"))

' Gestion de errores

if objxml.parseError.errorCode <> 0 Then
        response.Write("Error de Lectura (Por favor, ponerse en contacto con el webmaster).<br />FilePos: " & objxml.parseError.filepos & "<br /> Línea: " & objxml.parseError.Line & "<br /> Causa: " & objxml.parseError.reason & "<br /> Ocurrió en: " & objxml.parseError.srcText & "<br /> Archivo: " & objxml.parseError.URL)
        response.End()
end if

Averiguamos cuantas noticias tenemos
numNoticias 
objxml.selectSingleNode("Integracion").childNodes.length
response
.write("<br><br>AQUI: " numnoticias
Donde en la linea "numNoticias = objxml.selectSingleNode("Integracion").childNodes. length" habia que ir poniendo la ruta de los nodos y subnodos con los que querías trabajar.

Pues bien, al trabajar con este fichero, si pongo simplemente el nodo Integración, si que me devuelve el número de subnodos que tengo (Alumnos, Cursos y Matricula), e incluso si pongo Integración\Alumnos también va bien, pero como tendría que hacerlo para acceder al nodo de alumnos especificando la acción?? Ya que puedo tener tres acciones diferentes (Nuevos, Modificados y Borrados), pero si pongo "numNoticias = objxml.selectSingleNode("Integracion\Alumnos Accion=Nuevos").childNodes.length" me da el siguiente error:
Cita:
msxml3.dll error '80004005'

Se esperaba el testigo 'eof' y se encontró 'NAME'. /Integracion/Alumnos -->Accion<--='Nuevos'

/gestion/prueba_xml2.asp, línea 18
Supongo que habrá que especificarle de alguna manera que solo quiero los que tengan ese atributo acción, pero no se como hacerlo. Muchas gracias por adelantado a tod@s, salu2
__________________
Vayamos por Partes :: Jack el Destripador