]>
code.delx.au - pymsnt/blob - src/tlib/xmlw.py
1 # Copyright 2004-2005 James Bunton <james@delx.cjb.net>
2 # Licensed for distribution under the GPL version 2, check COPYING for details
4 from twisted
.python
import log
6 checkTwistedCached
= None
8 """ Returns False if we're using an old version that needs tlib, otherwise returns True """
9 global checkTwistedCached
10 if checkTwistedCached
== None:
11 import twisted
.copyright
12 checkTwistedCached
= (VersionNumber(twisted
.copyright
.version
) >= VersionNumber("2.0.0"))
13 return checkTwistedCached
16 def __init__(self
, vstring
):
25 elif c
.isdigit() and flag
:
26 self
.varray
[index
] *= 10
27 self
.varray
[index
] += int(c
)
31 def __cmp__(self
, other
):
34 if i
== len(other
.varray
):
35 if i
< len(self
.varray
):
39 if i
== len(self
.varray
):
40 if i
< len(other
.varray
):
45 if self
.varray
[i
] > other
.varray
[i
]:
47 elif self
.varray
[i
] < other
.varray
[i
]:
54 def parseText(text
, beExtremelyLenient
=False):
55 return TextParser(beExtremelyLenient
).parseString(text
)
57 def parseFile(filename
, beExtremelyLenient
=False):
58 t
= TextParser(beExtremelyLenient
)
64 log
.msg("Trying to import XML DOM")
65 from twisted
.words
.xish
.domish
import SuxElementStream
, Element
66 from twisted
.words
.protocols
.jabber
import jid
, component
67 jid
.intern = jid
.internJID
# This got renamed for some reason
68 log
.msg("Using Twisted >= 2.0, Words >= 0.3, Words DOM")
71 log
.msg("Checking Twisted version...")
73 from twisted
.xish
.domish
import SuxElementStream
, Element
74 from twisted
.words
.protocols
.jabber
import jid
, component
75 jid
.intern = jid
.internJID
# This got renamed for some reason
76 log
.msg("Using Twisted >= 2.0, Words < 0.3, Twisted DOM")
78 from tlib
.domish
import SuxElementStream
, Element
79 from tlib
.jabber
import jid
, component
80 log
.msg("Using Twisted < 2.0, Internal patched DOM")
82 print "Could not find the XML DOM. If you're using Twisted 2.x make sure you have twisted.words installed."
87 """ Taken from http://xoomer.virgilio.it/dialtone/rsschannel.py """
89 def __init__(self
, beExtremelyLenient
=False):
91 self
.beExtremelyLenient
= beExtremelyLenient
93 def parseFile(self
, filename
):
94 return self
.parseString(file(filename
).read())
96 def parseString(self
, data
):
97 es
= SuxElementStream()
98 es
.beExtremelyLenient
= self
.beExtremelyLenient
99 es
.DocumentStartEvent
= self
.docStart
100 es
.DocumentEndEvent
= self
.docEnd
101 es
.ElementEvent
= self
.element
105 def docStart(self
, e
):
111 def element(self
, e
):
112 self
.root
.addChild(e
)