CasperSecurity
o
`�wi� � @ s� d Z ddlZddlZddlmZmZmZmZ ddlT ddl m
Z
mZ ejj
jejj
jfZG dd� dejj
�Z
ee
dd d
� ee
ddd
� ee
d
dd
� dd� Zdd� Zdd� Zdd� ZG dd� de
�ZG dd� de
�Zeeddd
� eed
dd
� eeddd
� G d d!� d!e�Zeed"d#d
� eZG d$d%� d%e�Zedd�ZG d&d'� d'e
�Zeed(d)d
� eed
d*d
� d+d,� ZG d-d.� d.�ZG d/d0� d0ee
�Z G d1d2� d2ee
�Z!ee!d"d3d
� G d4d5� d5e!�Z"ee"d6d7d
� ee"d8d9d
� d:d;� Z#d<d=� Z$G d>d?� d?e!�Z%G d@dA� dAe"�Z&G dBdC� dCe�Z'ee'd"dDd
� G dEdF� dF�Z(G dGdH� dHe(ee
�Z)G dIdJ� dJe(e
�Z*G dKdL� dLe(ee
�Z+G dMdN� dNe
�Z,G dOdP� dPe�Z-dQdR� Z.G dSdT� dTe
e�Z/ee/dUdVd
� dWdX� Z0dYdZ� Z1d[d\� Z2dcd]d^�Z3ddd_d`�Z4dddadb�Z5dS )eac Simple implementation of the Level 1 DOM.
Namespaces and other minor Level 2 features are also supported.
parse("foo.xml")
parseString("<foo><bar/></foo>")
Todo:
=====
* convenience methods for getting elements and text.
* more testing
* bring some of the writer and linearizer code into conformance with this
interface
* SAX 2 namespaces
� N)�EMPTY_NAMESPACE�EMPTY_PREFIX�XMLNS_NAMESPACE�domreg)�*)�DOMImplementationLS�
DocumentLSc @ s� e Zd ZdZdZdZdZdZeZ dd� Z
d2dd�Z d3dd �Zd
d� Z
dd
� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zd d!� Zd"d#� Zd$d%� Zd&d'� Zd(d)� Zd*d+� Zd,d-� Zd.d/� Zd0d1� Z dS )4�NodeNc C � dS )NT� ��selfr r �&/usr/lib/python3.10/xml/dom/minidom.py�__bool__+ � z
Node.__bool__c C s | � dd||�S �N� )�toprettyxml)r
�encoding�
standaloner r r �toxml. � z
Node.toxml� �
c C sv |d u r t �� }nt jt �� |ddd�}| jtjkr%| �|d||||� n| �|d||� |d u r5|�� S |� � �� S )N�xmlcharrefreplacer )r �errors�newliner )
�io�StringIO�
TextIOWrapper�BytesIO�nodeTyper �
DOCUMENT_NODE�writexml�getvalue�detach)r
�indent�newlr r �writerr r r r 1 s
�zNode.toprettyxmlc C �
t | j�S �N)�bool�
childNodesr r r r �
hasChildNodesD �
zNode.hasChildNodesc C � | j S r* �r, r r r r �_get_childNodesG � zNode._get_childNodesc C � | j r| j d S d S �Nr r0 r r r r �_get_firstChildJ �
�zNode._get_firstChildc C r3 �N���r0 r r r r �_get_lastChildN r6 zNode._get_lastChildc C s |j | jkrt|j�D ]}| �||� q|S |j | jvr*tj�dt |�t | �f ��|j
d ur5|j
�|� |d u r@| �|� |S z| j�
|�}W n tyT tj�� �w |j tv r^t| � | j�||� ||_||_|r{| j|d }||_||_nd |_| |_
|S )N�%s cannot be child of %s� )r! �DOCUMENT_FRAGMENT_NODE�tupler, �insertBefore�_child_node_types�xml�dom�HierarchyRequestErr�repr�
parentNode�removeChild�appendChild�index�
ValueError�NotFoundErr�_nodeTypes_with_children�_clear_id_cache�insert�nextSibling�previousSibling)r
�newChild�refChild�crG �noder r r r>