Buscar texto en XML [Python]

Iniciado por Kasswed, 18 Agosto 2008, 13:22 PM

0 Miembros y 1 Visitante están viendo este tema.

Kasswed

Buenas.

Vamos a ver, yo quiero lo primero abrir un XML, y una vez ahi buscar unapalabra, y a partir de esa palabra copiar X caracteres a una variable.

O sea, que si el XML contiene:

Citar<?xml version="1.0" encoding="UTF-8"?>
<songs>
   <song path="http://www.goear.com/files/sst4/c783252b2dc18f2f0d209a79eb9cf75e.mp3" bild="img/s.jpg" artist="High and Mighty Color" title="Dive into yourself"/>
</songs>

Quiero buscar "path=" y a partir de ahicopiar la direccion que pone. He mirado funciones pero no atinoa encontrar la apropiada.

Alguna ayuda?

Gracias.
"He who allows himself to be insulted, deserves to be."

Repórtame cualquier falta a las normas del foro por mensaje privado.

Novlucker

#1
Lo que debes de hacer es buscar, en lugar de path...http://  ;)

Código (python) [Seleccionar]
import string
texto = "contenido del xml en donde se encuentra el http:// en medio"
texto = string.find(texto,"http://")


La verdad, estoy bastante oxidado en python, pero para que se entienda mejor como obtengo la dirección en el script para descargar los archivos de goear

Lo que hago, es buscar el http, para asi ver donde comienza la cadena.... luego de esto, busco las comillas", partiendo de donde he encontrado el comienzo del texto, para que se entienda mejor... el http lo encuentro en el lugar 15, comienzo a buscar la comilla a patir de esto, ya que se que la próxima comilla, marca el final de la dirección web.... luego ya con la marca de donde empieza, y donde termina el texto, saco lo que hay en medio y obtengo la dirección  ;)

Esto me resulta sencillo en vbscript, pero python lo tengo algo abandonado, y no tengo el interprete ahora mismo para ayudarte mejor  :-\

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Novlucker

#2
Bueno, mira, he convertido la función que tenía... a python  :P

Código (python) [Seleccionar]
import string
xmlcontent = '<song path="http://www.goear.com/files/sst4/c783252b2dc18f2f0d209a79eb9cf75e.mp3" bild="img/s.jpg" artist="High'
fpath = string.find(xmlcontent,"http://")
#primer caracter de la url
lpath = string.find(xmlcontent,'"',fpath)
#ultimo caracter de la url
mp3path = xmlcontent[fpath:lpath]
#leemos del primer caracter al ultimo
print mp3path
#nuestra url :P


Ten en cuenta que en xmlcontent estaría todo el contenido del xml
Saludos  ;)
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

leogtz

Si te sirve aqui esta en Batch, dado el ejemplo que pusiste, mete la URL del path, hasta donde diga .mp3 en una variable, y luego es mostrada.

Saludos.

Código (dos) [Seleccionar]
@echo off
cd %homedrive%\
rem file.xml es el documento que contiene la URL que pusiste en el ejemplo.
rem Dado que puse %homedrive% debe de estar en la raiz de tu disco.
for /f "tokens=2 delims==" %%a in ('type file.xml ^| find /i "path"') do (
set url=%%a
)
(set url2=%url:"=%)
set url3=%url2:~,-5%
(echo %url3%)
pause>nul
goto:eof
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

$hyDow


leogtz

Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Kasswed

Ok, yo lo decía leyéndolo directamente desde Internet sin necesidad de bajarlo, pero bueno. Haré un wget, lo bajo y lo abro con open(), y ya usaré string.find(), y nada luego pues lo borraré xD

Gracias.
"He who allows himself to be insulted, deserves to be."

Repórtame cualquier falta a las normas del foro por mensaje privado.

Ragnarok

Tiene que haber una forma mejor de hacerlo, todavía no me lo he leído, pero cuando pueda leeré esto:
http://docs.python.org/dev/3.0/library/markup.html

por si alguien tiene más tiempo que yo y se me adelanta.
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones