2009-07-29 18 views
6

Ich muss etwas Code portieren, der stark auf lxml von einer CPython-Anwendung auf IronPython beruht.Wie lxml unter IronPython funktioniert?

Lxml ist sehr Pythonic und ich würde es gerne unter IronPython verwenden, aber es hängt von libxslt und libxml2, die C-Erweiterungen sind.

Kennt jemand eine Problemumgehung, um lxml unter IronPython oder eine Version von lxml zuzulassen, die diese Abhängigkeiten C-Erweiterung nicht hat?

Antwort

1

Etwas, was Sie vielleicht schon in Betracht gezogen haben:

Eine Alternative ist zum ersten Anschluss der lxml Bibliothek IPy und dann Ihr Code (abhängig von der Codegröße). Möglicherweise müssen Sie einige C# -Wrapper für die nativen C-Aufrufe an die C-Erweiterungen schreiben - ich bin mir nicht sicher, welche Probleme, wenn überhaupt, in Bezug auf IPy involviert sind.

Oder wenn der Code, den Sie portieren, im Vergleich zu lxml klein ist, dann können Sie vielleicht einfach die lxml-Abhängigkeit entfernen und die .NET XML-Bibliotheken verwenden.

+1

Vielen Dank für diese Information, jetzt denken wir ernsthaft darüber nach, lxml zu dumpen und für .Net XML zu gehen, weil wir C-Erweiterungen überhaupt nicht verwenden können. –

2

Sie könnten IronClad auschecken, das ein Open Source-Projekt ist, das C-Erweiterungen für Python in IronPython verfügbar machen soll.

+0

Danke für deine Antwort und deine Zeit, ich wünschte ich könnte IronClad benutzen und es würde wahrscheinlich in den meisten Fällen funktionieren. Leider läuft mein Code als eingebettetes IronPython-Skript in einem ASP.net-Server und ich kann keine native Erweiterung verwenden, selbst wenn ich darauf zugreifen könnte. –

+0

Ich bin kein erfahrener IronPython- oder Python-Entwickler; Ich bin ein .Net-Entwickler, der Hobbys in IronPython. Vergib mir Unwissenheit hier. Es sieht so aus, als wäre lxml eine ziemlich reichhaltige API, daher wird es schwer zu replizieren sein. Eine Idee, die ich hatte, war zu versuchen, jene Teile der lxml API zu replizieren, die du gerade benutzt. Sie können ein Projekt wie http://devhawk.net/2008/05/06/Stream+Processing+XML+In+IronPython.aspx als Ausgangspunkt betrachten. –