Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - jdomgo3

#1
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 (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.
#2
Para C, C++ y Java uso Eclipse, y para Tcl, ShellScript, Python, Perl, PHP y demás uso Komdo (en Mac) y Ultraedit (en Windows).
#3
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 (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>


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 (php) [Seleccionar]

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



Un saludo y muchas gracias de antemano.
#4
Scripting / Re: [Reto Bash] It's a dir?
7 Febrero 2014, 07:28 AM
En realidad hay 7 tipos definidos en los sistemas BDS y System V que son:


  • (-) Archivo ordinario y tiene la constante asociada en sys/stat.h "S__IFREG"
  • (d) Directorio y tiene la constante asociada en sys/stat.h "S__IFDIR"
  • (p) Cauce nombrado o "fifo" y tiene la constante asociada en sys/stat.h "S__IFIFO"
  • (c) Archivo especial modo carácter y tiene la constante asociada en sys/stat.h "S__IFCHR"
  • (b) Archivo especial modo bloque y tiene la constante asociada en sys/stat.h "S__IFBLK"
  • (l) Enlace simbólico y tiene la constante asociada en sys/stat.h "S__IFLNK"
  • (s) "Shoket" y tiene la constante asociada en sys/stat.h "S__IFSHOCK"

Un saludo.
#5
Drvy y EFEX, muchas gracia a los dos, llamadme cateto pero... no se muy bien cómo adaptar esta función y su invocación a mis datos, arrgggg. Mi tabla se llama prueba, la columna se llama col1 y he de cambiar el string hola:98yef8y por el string adios:

Código (SQL) [Seleccionar]
DELIMITER $$
CREATE FUNCTION  `regex_replace`(pattern VARCHAR(1000),replacement VARCHAR(1000),original VARCHAR(1000))

RETURNS VARCHAR(1000)
DETERMINISTIC
BEGIN
DECLARE temp VARCHAR(1000);
DECLARE ch VARCHAR(1);
DECLARE i INT;
SET i = 1;
SET temp = '';
IF original REGEXP pattern THEN
  loop_label: LOOP
   IF i>CHAR_LENGTH(original) THEN
    LEAVE loop_label; 
   END IF;
   SET ch = SUBSTRING(original,i,1);
   IF NOT ch REGEXP pattern THEN
    SET temp = CONCAT(temp,ch);
   ELSE
    SET temp = CONCAT(temp,replacement);
   END IF;
   SET i=i+1;
  END LOOP;
ELSE
  SET temp = original;
END IF;
RETURN temp;
END$$
DELIMITER ;

SELECT * FROM  `prueba` WHERE col1 regex_replace('hola\:[a-zA-Z0-9\-]*','','adios');


No me está funcionando, no creo que lo esté haciendo bien, pero es que no controlo muy bien esto de las funciones en SQL.
#6
Cita de: EFEX en 25 Enero 2014, 23:43 PM
La function replace no soporta expresiones regulares y creo que no existe funcion mysql que lo soporte.

Gracias EFEX, seguiré mirando a ver si encuentro alguna cosa que me sirva.
#7
Cita de: engelx en 25 Enero 2014, 23:15 PM
Lee la hojas de expresiones rwgulares eso es un poco mas complicado... no es mas facil que lo hagas en PHP o tienes que hacerlo en mysql puro?

Es en MySQL puro, no es nada PHP. Gracias de todos modos, seguiré mirando a ver si hay algo. Y si no un export, un awk o sed de toda la vida y un import, pero esa será mi última opción.
#8
Cojonudo, me ha funcionado, lo que no se muy bien cómo hacer es la sustitución en todos los casos que encuentre cadena1:[a-zA-Z0-9]* por cadena2, a sin mas, sin dos puntos ni nada mas a su derecha.

He probado con:

Código (SQL) [Seleccionar]
UPDATE `tabla` SET `campo` = REPLACE(`campo`, cadena1\:[a-zA-Z0-9]*, cadena2);

pero no me funciona  :-\
#9
Saludos, llevo un rato buscando la manera de hacer una búsqueda de una cadena con caracteres especiales, como por ejemplo, corchetes ([]) y dos puntos(:) en una tabla. Concretamente necesito buscar la siguiente cadena:

Código (txt) [Seleccionar]
[cadena1:1234abdc]

He de decir que la parte "1234abcd" puede variar, es alfanumérica y rándom, en cambio "cadena1" es siempre igual. Por ejemplo:

Código (txt) [Seleccionar]
[cadena1:98u34r7y]

La query que estoy intentando es:

Código (SQL) [Seleccionar]
SELECT * FROM `tabla` WHERE columna REGEXP '\\[cadena1:*\\]';

Pero no me funciona. La segunda parte de lo que necesito hacer es sustituir cualquier coincidencia de [cadena1:*] por [cadena2], así, solo "[cadena2]", sin dos puntos ni nada mas, entre corchetes.

¿Cómo podría hacer esto?



Un saludo y gracias de antemano por la ayuda.
#10
Cita de: rollth en 22 Enero 2014, 20:47 PM
Vale, me parece interesante, pero veo mas facil crearlo con excell y de la misma eficacia

Pues también es verdad. Ojo, cuidado con Excel, que trabajar bien con Excel es la hostia de complicado. Yo tengo un montón de apuntes de cómo hacer fórmulas complejas por trabajo y te puedes cagar.