elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Parsear XML con (.) y (:) en "tag names" usando simpleXml de PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Parsear XML con (.) y (:) en "tag names" usando simpleXml de PHP  (Leído 3,303 veces)
jdomgo3

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Parsear XML con (.) y (:) en "tag names" usando simpleXml de PHP
« en: 10 Febrero 2014, 10:13 am »

Hola a todos,
llevo un par de días probando varias cosas pero no lo consigo, el caso es que hay información en la web sobre cómo parsear xml cuando este tiene dos puntos en los namespaces pero mi problema va un poco mas allá, este es un fragmento del xml (en realidad es un XMI, no un XML) que quiero parsear:

Código
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <com.ibm.ejs.models.base.bindings.webappbnd:WebAppBinding xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
  3. xmlns:com.ibm.ejs.models.base.bindings.webappbnd="webappbnd.xmi" xmi:id="WebAppBinding_1267660235297" virtualHostName="ABCD_01">
  4.  <webapp href="WEB-INF/web.xml#WebApp_1267500236267"/>
  5. </com.ibm.ejs.models.base.bindings.webappbnd:WebAppBinding>

Necesito quedarme con el item virtualHostName que pertenece al nodo com.ibm.ejs.models.base.bindings.webappbnd:WebAppBinding y este nombre tiene puntos ( . ) y dos puntos ( : ), ¿alguna idea?

Esto es lo último que he probado, sin éxito:

Código
  1. $loadIbmWebBnd = simplexml_load_file(archivo.xmi);
  2. foreach($loadIbmWebBnd->com.ibm.ejs.models.base.bindings.webappbnd:WebAppBinding as $vH) {
  3. echo $vH[virtualHostName];
  4. }


Un saludo y muchas gracias de antemano.


En línea

jdomgo3

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Re: Parsear XML con (.) y (:) en "tag names" usando simpleXml de PHP
« Respuesta #1 en: 10 Febrero 2014, 21:45 pm »

La parte de los dos puntos está "apañada" y digo apañada por que en realidad no uso un parseador para tratar este dato, si no que directamente elimino los dos puntos y con eso me funciona en aquellos nodos que contienen los dos puntos ( : ) y no contienen puntos ( . ), por ejemplo:

Código
  1. <host:VirtualHost xmi:id="VirtualHost_1391153615303" name="ABCD">
  2. <mimeTypes xmi:id="MimeEntry_1391153615303" type="application/RAL">
  3. <extensions>RAL</extensions>
  4. <extensions>ral</extensions>
  5. </mimeTypes>
  6. </host:VirtualHost>

Para parsear el namespace host:VirtualHost y obtener el valor de la propiedad name lo que hago es eliminar los dos puntos de la siguiente manera con la función preg_replace y luego parseo el contenido como string (no como archivo) con la función simplexml_load_string:

Código
  1. $loadArchivoXml = file_get_contents(archivo.xml);
  2. $loadArchivoXml = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $loadArchivoXml);
  3. $loadArchivoXml = simplexml_load_string($loadArchivoXml);
  4. foreach($loadArchivoXml->hostVirtualHost as $virtualHost) {
  5. echo "El valor de la propiedad name es: ".$virtualHost['name'];
  6. }

Siendo la salida...

Código
  1. El valor de la propiedad name es: ABCD

Solo pongo esto por si alguno tiene el problema de parsear namespaces con dos puntos ( : ), pero no es la solución a mi problema, ya que sigo sin saber cómo tratar los namespaces con puntos ( . ) y haciendo el mismo proceso no meha funcionado  :-(, a ver si a alguno de vosotros se os ocurre alguna idea mejor. Pongo otra vez el trozo de XML con el que quiero trabajar:

Código
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <com.ibm.ejs.models.base.bindings.webappbnd:WebAppBinding xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
  3. xmlns:com.ibm.ejs.models.base.bindings.webappbnd="webappbnd.xmi" xmi:id="WebAppBinding_1267660235297" virtualHostName="ABCD_01">
  4.  <webapp href="WEB-INF/web.xml#WebApp_1267500236267"/>
  5. </com.ibm.ejs.models.base.bindings.webappbnd:WebAppBinding>


Un saludo y gracias de antemano.


« Última modificación: 10 Febrero 2014, 22:18 pm por jdomgo3 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
De donde puedo descargar utilidades: "Formas", "Estilos", "Motivos", D
Diseño Gráfico
Ad0nis 2 8,281 Último mensaje 2 Septiembre 2006, 15:48 pm
por Ad0nis
[Ayuda] modificar "start page" en "internet explorer" con "batch"
Scripting
taton 7 16,536 Último mensaje 20 Septiembre 2006, 01:45 am
por taton
recursos visual basic, """"""proceso inmortal"""""
Análisis y Diseño de Malware
Dark4ngel 7 13,213 Último mensaje 3 Noviembre 2011, 10:42 am
por Dark4ngel
Problema con formulario usando onSubmit="" y .submit()
Desarrollo Web
Mokonauta 6 3,717 Último mensaje 2 Junio 2014, 21:27 pm
por EFEX
Error al "parsear" JSON de forma síncrona
Desarrollo Web
Ketchuz 3 2,560 Último mensaje 4 Diciembre 2013, 03:15 am
por Ketchuz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines