BeautifulSoup modülünü kullanarak XML sohbet günlüklerini ayrıştırmak için basit bir komut dosyası yazdım. Standart soup.prettify(), sohbet günlüklerinin içinde çok fazla havlanma olması dışında tamam çalışır.Python BeautifulSoup XML Ayrıştırma
Kod
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])
Test XML Girdi ben
<?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>
: Sen komut kodu ve aşağıda ile çalışıyorum XML girdi dosyasının bazı görebildiğinizden Bunu, aşağıdaki gibi bir biçime veya en azından salt XML'den daha okunabilir bir şeye dönüştürmek istemek:
Jon: Hey, n'aber? [10/31/10 3 @: 43P]
Jon: @ 3 oh harika [10/31/10:
Bill: Mesajınızı [44P 10/31/10 3 @] Got : 44p]
vb. PyParsing modülü hakkında bazı iyi şeyler duydum, belki de ona bir şans vermenin zamanı geldi.
Neden XSLT? Bu en kolay olurdu. (Aslında: "xml-stylesheet direktifinin olduğunu görüyoruz - varsayılan stil sayfası neye benziyor?) –
Her zaman XSL stil sayfasının mevcut olmayabilir, bu yüzden bir şeyleri biraz daha okunabilir bir şeye biçimlendirmek için ihtiyaç duyuyoruz . Aynı stil sayfasını sahip olduğum gibi kullanabiliyorsam, bu da işe yarayabilir. –