Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def get_css_class_dict(node):
- """
- Given an xml.dom.minidom.Node, returns a map from every "class" attribute
- from it to a list of nodes with this class.
- For example, for the document below:
- >>> doc = xml.dom.minidom.parseString(
- ... '''
- ... <html>
- ... <body>
- ... <div class="a b"><span class="a"></span></div>
- ... </body>
- ... </html>
- ... ''')
- ...we will get this:
- >>> d = get_css_class_dict(doc)
- >>> d['a'] # doctest: +ELLIPSIS
- [<DOM Element: div at ...>, <DOM Element: span at ...>]
- >>> d['b'] # doctest: +ELLIPSIS
- [<DOM Element: span at ...>]
- """
- css_class_dict = {}
- if node.attributes is not None and 'class' in node.attributes:
- css_classes = node.attributes['class'].value
- for css_class in css_classes.split():
- css_class_list = css_class_dict.get(css_class, [])
- css_class_list.append(node)
- css_class_dict[css_class] = css_class_list
- childNodes = getattr(node, 'childNodes', [])
- for cn in childNodes:
- ccd = get_css_class_dict(cn)
- for css_class, nodes_list in ccd.items():
- css_class_list = css_class_dict.get(css_class, [])
- css_class_list.extend(nodes_list)
- css_class_dict[css_class] = css_class_list
- return css_class_dict
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement