2012-01-23 15 views
5

w Pythonie 2.6 Zrobiłem to, by osiągnąć tranform xslPython3 i XML/XSLT biblioteki

import libxml2 
    import libxslt 
    ... 
    styledoc = libxml2.parseFile(my_xslt_file) 
    style = libxslt.parseStylesheetDoc(styledoc) 
    doc = libxml2.parseDoc(siri_response_data) 
    result = style.applyStylesheet(doc, None) 
    ... 

co byłoby równoważne w Pythonie 3.2?

Pytam, ponieważ wydaje się, że lnxml i libxslt nie są dostępne w python3.2. Słyszałem o lxml - czy jest to bezpośredni odpowiednik libxml2 + libxslt, czy ma inne wzorce wywołania (wymagające przepisania kodu)?

+0

myślę libxml2 libraries/XSLT teraz zaoferować powiązania Python3 przez '/ configure' skryptu argumentu' - with-python = $ {PATH_TO_PYTHON3_BINARY} ', np.'/usr/bin/python3'. – kevinarpe

Odpowiedz

1

Ponieważ te biblioteki są tylko obwolut wokół C-biblioteki nie powinny być one bardzo trudne do portu Pythona 3.

Jedyną alternatywą jest lxml, który posiada interfejs typu ElementTree, więc jest to wyższy poziom i więcej "pythonic". Nie sądzę, że zapewnia bezpośredni interfejs do bibliotek.

+0

Chociaż zgadzam się z sentymentem tej odpowiedzi, w praktyce nie okazało się to tak łatwe dla mnie lub innych osób do wykonania. Jednak żyję w nadziei! –

2

Analog swojego kodu za pomocą lxml.

from lxml import etree 

# ...  
styledoc = etree.parse(my_xslt_file) 
transform = etree.XSLT(styledoc) 
doc = etree.fromstring(siri_response_data) 
result = transform(doc) 
# ... 

lxml list wsparcia dla Pythona 3.2

+0

Przydatna sugestia, która działa - ale (jak dotąd) nie daje dokładnie takiego samego wyniku, jak wynik z trasy libxml2/libxslt. Jednak ta metoda nie powoduje przecieku pamięci - podczas gdy kod w moim pytaniu przecieka jak sito! Zbadam to bardziej. Moje podziękowania –

+0

['lxml' używa' libxml2/libxslt' pod maską] (http://lxml.de/installation.html), więc wyniki powinny być takie same. Używa Cython do generowania rozszerzeń C, które działają zarówno w Pythonie 2.x, jak i 3.x z tego samego źródła, [przykład] (https://github.com/lxml/lxml/blob/master/src/lxml/tree. pxd). – jfs