He escrito un script simple para analizar los registros de chat XML utilizando el módulo BeautifulSoup. El estándar soup.prettify() funciona bien, excepto que los registros de chat tienen mucha pelusa. Se puede ver tanto el código de secuencia de comandos y algunos de los archivos de entrada XML que estoy trabajando a continuación:Python BeautifulSoup XML Parsing
Código
import sys
from BeautifulSoup import BeautifulSoup as Soup
def parseLog(file):
file = sys.argv[1]
handler = open(file).read()
soup = Soup(handler)
print soup.prettify()
if __name__ == "__main__":
parseLog(sys.argv[1])
de entrada XML de prueba
<?xml version="1.0"?>
<?xml-stylesheet type='text/xsl' href='MessageLog.xsl'?>
<Log FirstSessionID="1" LastSessionID="2"><Message Date="10/31/2010" Time="3:43:48 PM" DateTime="2010-10-31T20:43:48.937Z" SessionID="1"><From><User FriendlyName="Jon"/></From> <To><User FriendlyName="Bill"/></To><Text Style="font-family:Segoe UI; color:#000000; ">hey, what's up?</Text></Message>
<Message Date="10/31/2010" Time="3:44:03 PM" DateTime="2010-10-15T20:44:03.421Z" SessionID="1"><From><User FriendlyName="Jon"/></From><To><User FriendlyName="Bill"/></To><Text Style="font-family:Segoe UI; color:#000000; ">Got your message</Text></Message>
<Message Date="10/31/2010" Time="3:44:31 PM" DateTime="2010-10-15T20:44:31.390Z" SessionID="2"><From><User FriendlyName="Bill"/></From><To><User FriendlyName="Jon"/></To><Text Style="font-family:Segoe UI; color:#000000; ">oh, great</Text></Message>
<Message Date="10/31/2010" Time="3:44:59 PM" DateTime="2010-10-15T20:44:59.281Z" SessionID="2"><From><User FriendlyName="Bill"/></From><To><User FriendlyName="Jon"/></To><Text Style="font-family:Segoe UI; color:#000000; ">hey, i gotta run</Text></Message>
estoy querer poder mostrar esto en un formato como el siguiente o al menos algo que sea más legible que XML puro:
Jon: Oye, ¿qué pasa? [10/31/10 @ 3: 43p]
Jon: conseguido su mensaje [10/31/10 @ 3: 44p]
Bill: oh, gran [10/31/10 @ 3 : 44p]
etc. He oído algunas cosas decentes sobre el módulo PyParsing, tal vez es hora de darle una oportunidad.
¿Por qué no XSLT? Eso sería lo más fácil. (De hecho: veo que hay una directiva de xml-stylesheet: ¿cómo se ve la hoja de estilos predeterminada?) –
Puede que no siempre tenga disponible la hoja de estilos XSL, por lo que es necesario algo para formatear el registro en algo un poco más legible . Si puedo usar la misma hoja de estilo que tengo, eso también podría funcionar. –