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:
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:
Siendo la salida...
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:
Un saludo y gracias de antemano.
Código (xml) [Seleccionar]
<host:VirtualHost xmi:id="VirtualHost_1391153615303" name="ABCD">
<mimeTypes xmi:id="MimeEntry_1391153615303" type="application/RAL">
<extensions>RAL</extensions>
<extensions>ral</extensions>
</mimeTypes>
</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 (php) [Seleccionar]
$loadArchivoXml = file_get_contents(archivo.xml);
$loadArchivoXml = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $loadArchivoXml);
$loadArchivoXml = simplexml_load_string($loadArchivoXml);
foreach($loadArchivoXml->hostVirtualHost as $virtualHost) {
echo "El valor de la propiedad name es: ".$virtualHost['name'];
}
Siendo la salida...
Código (txt) [Seleccionar]
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 (xml) [Seleccionar]
<?xml version="1.0" encoding="UTF-8"?>
<com.ibm.ejs.models.base.bindings.webappbnd:WebAppBinding xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
xmlns:com.ibm.ejs.models.base.bindings.webappbnd="webappbnd.xmi" xmi:id="WebAppBinding_1267660235297" virtualHostName="ABCD_01">
<webapp href="WEB-INF/web.xml#WebApp_1267500236267"/>
</com.ibm.ejs.models.base.bindings.webappbnd:WebAppBinding>
Un saludo y gracias de antemano.