]>
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 log
.msg("Using Twisted >= 2.0, Words >= 0.3, Words DOM")
70 log
.msg("Checking Twisted version...")
72 from twisted
.xish
.domish
import SuxElementStream
, Element
73 from twisted
.words
.protocols
.jabber
import jid
, component
74 log
.msg("Using Twisted >= 2.0, Words < 0.3, Twisted DOM")
76 from tlib
.domish
import SuxElementStream
, Element
77 from tlib
.jabber
import jid
, component
78 log
.msg("Using Twisted < 2.0, Internal patched DOM")
80 print "Could not find the XML DOM. If you're using Twisted 2.x make sure you have twisted.words installed."
85 """ Taken from http://xoomer.virgilio.it/dialtone/rsschannel.py """
87 def __init__(self
, beExtremelyLenient
=False):
89 self
.beExtremelyLenient
= beExtremelyLenient
91 def parseFile(self
, filename
):
92 return self
.parseString(file(filename
).read())
94 def parseString(self
, data
):
95 es
= SuxElementStream()
96 es
.beExtremelyLenient
= self
.beExtremelyLenient
97 es
.DocumentStartEvent
= self
.docStart
98 es
.DocumentEndEvent
= self
.docEnd
99 es
.ElementEvent
= self
.element
103 def docStart(self
, e
):
109 def element(self
, e
):
110 self
.root
.addChild(e
)