예제 #1
0
def testGetElementsByTagNameNS():
    d = """<foo xmlns:minidom='http://pyxml.sf.net/minidom'>
    <minidom:myelem/>
    </foo>"""
    dom = parseString(d)
    elems = dom.getElementsByTagNameNS("http://pyxml.sf.net/minidom", "myelem")
    confirm(
        len(elems) == 1
        and elems[0].namespaceURI == "http://pyxml.sf.net/minidom"
        and elems[0].localName == "myelem" and elems[0].prefix == "minidom"
        and elems[0].tagName == "minidom:myelem"
        and elems[0].nodeName == "minidom:myelem")
    dom.unlink()
def testGetElementsByTagNameNS():
    d="""<foo xmlns:minidom='http://pyxml.sf.net/minidom'>
    <minidom:myelem/>
    </foo>"""
    dom = parseString(d)
    elems = dom.getElementsByTagNameNS("http://pyxml.sf.net/minidom", "myelem")
    confirm(len(elems) == 1
            and elems[0].namespaceURI == "http://pyxml.sf.net/minidom"
            and elems[0].localName == "myelem"
            and elems[0].prefix == "minidom"
            and elems[0].tagName == "minidom:myelem"
            and elems[0].nodeName == "minidom:myelem")
    dom.unlink()
예제 #3
0
    def __init__(self, dom, title):
        self.document = dom
        self.title = title

        # build a list of interfaces in this protocol
        self.interfaces = []
        def recurse(nodes):
            for node in nodes:
                if node.nodeType != node.ELEMENT_NODE: continue

                if node.tagName == 'protocol':
                    # recurse into this level for interesting items
                    recurse(node.childNodes)
                elif node.tagName == 'interface':
                    self.interfaces.append(Interface(self, node))
                elif node.tagName == 'copyright':
                    continue
                else:
                    raise UnknownTag('protocol has unknown child: %s' % \
                                     node.tagName)

        recurse(dom.childNodes)

        self.everything = {}
        for interface in self.interfaces:
            self.everything[interface.get_full_name()] = interface

            for things in [ 'requests', 'events', 'enums' ]:
                for thing in getattr(interface, things):
                    self.everything[thing.get_full_name()] = thing

        # sort out references
        for item in self.everything.values():
            if hasattr(item, 'args'):
                args = getattr(item, 'args')

                for arg in args:
                    t = arg.get_type()
                    if t is None:
                        continue

                    if arg.type == 'new_id':
                        bisect.insort(t.constructors, item)
                    else:
                        bisect.insort(t.refs, item)

        # get some extra bits for the HTML
        node = dom.getElementsByTagNameNS(None, 'protocol')[0]
        self.name = node.getAttribute('name')