Beispiel #1
0
def cdata():
    xml = '<a><![CDATA[<b>This is my &amp;&lt;tag&gt;</b>]]></a>'
    p = Parser()
    d = p.parse(string=xml)
    print d
    a = d.root()
    print a.getText()
Beispiel #2
0
 def get(self, id):
     try:
         fp = FileCache.getf(self, id)
         if fp is None:
             return None
         p = Parser()
         return p.parse(fp)
     except:
         FileCache.purge(self, id)
Beispiel #3
0
def basic():
    xml = "<a>Me &amp;&amp; &lt;b&gt;my&lt;/b&gt; shadow&apos;s &lt;i&gt;dog&lt;/i&gt; love to &apos;play&apos; and sing &quot;la,la,la&quot;;</a>"
    p = Parser()
    d = p.parse(string=xml)
    a = d.root()
    print 'A(parsed)=\n%s' % a
    assert str(a) == xml
    b = Element('a')
    b.setText('Me &&amp; &lt;b>my</b> shadow\'s <i>dog</i> love to \'play\' and sing "la,la,la";')
    print 'B(encoded)=\n%s' % b
    assert str(b) == xml
    print 'A(text-decoded)=\n%s' % a.getText()
    print 'B(text-decoded)=\n%s' % b.getText()
    assert a.getText() == b.getText()
    print 'test pruning'
    j = Element('A')
    j.set('n', 1)
    j.append(Element('B'))
    print j
    j.prune()
    print j
Beispiel #4
0
    def download(self, url):
        """
        Download the docuemnt.
        @param url: A document url.
        @type url: str.
        @return: A file pointer to the docuemnt.
        @rtype: file-like
        """
        store = DocumentStore()
        fp = store.open(url)

        if fp is not None:
            content = fp.read()
            fp.close()
        else:
            content = yield self.options.transport.open(Request(url))

        ctx = self.plugins.document.loaded(url=url, document=content)
        content = ctx.document
        sax = Parser()
        defer.returnValue(sax.parse(string=content))
Beispiel #5
0
 def get_fault(self, reply):
     """
     Extract the fault from the specified soap reply.  If I{faults} is True, an
     exception is raised.  Otherwise, the I{unmarshalled} fault L{Object} is
     returned.  This method is called when the server raises a I{web fault}.
     @param reply: A soap reply message.
     @type reply: str
     @return: A fault object.
     @rtype: tuple ( L{Element}, L{Object} )
     """
     reply = self.replyfilter(reply)
     sax = Parser()
     faultroot = sax.parse(string=reply)
     soapenv = faultroot.getChild('Envelope')
     soapbody = soapenv.getChild('Body')
     fault = soapbody.getChild('Fault')
     unmarshaller = self.unmarshaller(False)
     p = unmarshaller.process(fault)
     if self.options().faults:
         raise WebFault(p, faultroot)
     return (faultroot, p.detail)
Beispiel #6
0
 def get_reply(self, method, reply):
     """
     Process the I{reply} for the specified I{method} by sax parsing the I{reply}
     and then unmarshalling into python object(s).
     @param method: The name of the invoked method.
     @type method: str
     @param reply: The reply XML received after invoking the specified method.
     @type reply: str
     @return: The unmarshalled reply.  The returned value is an L{Object} for a
         I{list} depending on whether the service returns a single object or a
         collection.
     @rtype: tuple ( L{Element}, L{Object} )
     """
     reply = self.replyfilter(reply)
     sax = Parser()
     replyroot = sax.parse(string=reply)
     plugins = PluginContainer(self.options().plugins)
     plugins.message.parsed(reply=replyroot)
     soapenv = replyroot.getChild('Envelope')
     soapenv.promotePrefixes()
     soapbody = soapenv.getChild('Body')
     self.detect_fault(soapbody)
     soapbody = self.multiref.process(soapbody)
     nodes = self.replycontent(method, soapbody)
     rtypes = self.returned_types(method)
     if len(rtypes) > 1:
         result = self.replycomposite(rtypes, nodes)
         return (replyroot, result)
     if len(rtypes) == 1:
         if rtypes[0].unbounded():
             result = self.replylist(rtypes[0], nodes)
             return (replyroot, result)
         if len(nodes):
             unmarshaller = self.unmarshaller()
             resolved = rtypes[0].resolve(nobuiltin=True)
             result = unmarshaller.process(nodes[0], resolved)
             return (replyroot, result)
     return (replyroot, None)