[Twisted-Python] Help using XmlStreamFactory & XmlStream : XPathQuery error?
Gabriel Rossetti
mailing_lists at evotex.ch
Tue Feb 19 04:29:38 MST 2008
Gabriel Rossetti wrote:
> Hello,
>
> I am trying to write a Server and Client that use an XML protocol. I
> saw that there is a XmlStream class and tried to use it, but was
> unable to. I saw one small example for a client
> (http://ralphm.net/blog/2005/10), but it raises some questions.
>
> First of all, it seams to work compleatly differently that the other
> server/client examples.
>
> I don't understand why there is a need to add observers, and what they
> are used for. I can't get any of these to work (on either side, client
> or server):
>
> def connectionMade(self):
> print 'Connected!'
>
> def dataReceived(self, data):
> print data
>
> def onDocumentStart(self, rootElement):
> print "Message start : ", rootElement
>
> def onElement(self, element):
> print "current element : ", element
>
> def onDocumentEnd(self, rootElement):
> print "Message end : ", rootElement
>
> I'm kind of lost :-(
> I'm new to Twisted and I though that I understood how it works (read
> howtos, turorials, etc, but this one doesn't seam like the others. Can
> someone please point me to an example, I searched google but no luck.
> All I need is a simple client-server xml echo example or a better
> understanding of how it works and how it differs from the other echo
> examples. Thank you,
>
> Gabriel
>
> Thank you
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
Ok, I've got some code sort of working, if I use the following
XPathQuery string : "/*" on the following XML string :
<?xml version="1.0" encoding="utf-8"?>
<test><feed name="test">toto</feed></test>
the addObserver works ( xs.addObserver("/*", self.onTest) )
but if I try the following :
xs.addObserver("/test/feed/@name", self.onTest)
or
xs.addObserver(xpath.XPathQuery("/test/feed/@name"), self.onTest)
I get the following :
<......>
File
"/usr/lib/python2.5/site-packages/twisted/words/xish/xmlstream.py", line
104, in onElement
self.dispatch(element)
File "/usr/lib/python2.5/site-packages/twisted/words/xish/utility.py",
line 232, in dispatch
if query.matches(object):
File "/usr/lib/python2.5/site-packages/twisted/words/xish/xpath.py",
line 238, in matches
return self.baseLocation.matches(elem)
exceptions.AttributeError: 'NoneType' object has no attribute 'matches'
Does anyone understand why?
More information about the Twisted-Python
mailing list