コード例 #1
0
ファイル: xmlbuilder.py プロジェクト: jrydberg/edgy
def Element(tag, attrib={}, *children, **extra):
    """ Element(tag (,attrdict)? (,subelement|string)* ) -> Element """

    if isinstance(attrib, dict):
        attrib = attrib.copy()
    else:
        children = (attrib,) + children 
        attrib = {}
    attrib.update(extra)

    element = basefactory(tag, attrib)

    prevelem = None
    for arg in children:
        if iselement(arg):
            element.append(arg)
            prevelem = arg
        else:
            if isinstance(arg, basestring):
                if prevelem is None:
                    element.text = (element.text or '') + arg
                else:
                    prevelem.tail = (prevelem.tail or '') + arg
            else:
                try:
                    it = iter(arg)
                except:
                    raise TypeError, "argument type to Element"
                for item in it:
                    if not iselement(item):
                        raise TypeError, "invalid argument type to Element"
                    element.append(item)
    return element
コード例 #2
0
ファイル: data_model.py プロジェクト: jrydberg/edgy
def is_element_node(node, uri = None, name = None):
    if not iselement(node):
        return False
    if uri is None and name is None:
        return True
    element_uri, element_name = get_expanded_name(node)
    if uri != element_uri:
        return False
    return name is None or name == element_name
コード例 #3
0
ファイル: data_model.py プロジェクト: jrydberg/edgy
def is_node_set(x):
    return isinstance(x, (list, tuple)) or iselement(x)