예제 #1
0
def _clear_context(elem: etree._Element) -> None:
    elem.clear()

    while elem.getprevious() is not None:
        del elem.getparent()[0]

    return None
예제 #2
0
파일: utils.py 프로젝트: HENNGE/minisignxml
def remove_preserving_whitespace(element: Element) -> None:
    parent = element.getparent()
    if element.tail:
        prev = element.getprevious()
        if prev is not None:
            prev.tail = (prev.tail or "") + element.tail
        else:
            parent.text = (parent.text or "") + element.tail
    parent.remove(element)
예제 #3
0
파일: utils.py 프로젝트: funkyfuture/delb
def _copy_root_siblings(source: etree._Element, target: etree._Element):
    stack = []
    current_element = source.getprevious()
    while current_element is not None:
        stack.append(current_element)
        current_element = current_element.getprevious()
    while stack:
        target.addprevious(copy(stack.pop()))

    stack = []
    current_element = source.getnext()
    while current_element is not None:
        stack.append(current_element)
        current_element = current_element.getnext()
    while stack:
        target.addnext(copy(stack.pop()))
예제 #4
0
def load_app(
    app: et._Element, direction: str
) -> Tuple[Union[int, Tuple[int, int], None], List[Dict[str, str]], List[Dict[
        str, str]], List[str], et._Element]:
    if direction == 'next':
        while True:
            app = app.getnext()
            if app.tag == 'app':
                break
    elif direction == 'prev':
        while True:
            app = app.getprevious()
            if app.tag == 'app':
                break
    selected_app = get_focus_app(app)
    rdgs = get_all_rdgs(app)
    arcs, nodes = get_arcs(app)
    return selected_app, rdgs, arcs, nodes, app
예제 #5
0
    def remove_node(self, node: ET._Element, hold_tail=False):
        """
        删除指定节点

        @param {ET._Element} node - 要删除的节点
        @param {bool} hold_tail=False - 是否保留上一节点的tail信息
        """
        _parent = node.getparent()
        if _parent is not None:
            if hold_tail and node.tail is not None:
                # 保存上一节点tail信息
                _tail = node.tail
                _previous = node.getprevious()
                if _previous is not None:
                    _previous.tail = (_previous.tail or '') + _tail
                else:
                    _parent.text = (_parent.text or '') + _tail
                _parent.remove(node)
            else:
                # 直接删除
                _parent.remove(node)
예제 #6
0
def cleanup(elem: etree._Element):
    elem.clear()
    while elem.getprevious() is not None:
        del elem.getparent()[0]  # clean up preceding siblings