Package xmpp :: Module simplexml :: Class Node

[hide private]
[frames] | no frames]

# Class Node

source code

Known Subclasses:
  protocol.DataField, protocol.DataForm, protocol.Protocol, protocol.ErrorNode

Node class describes syntax of separate XML Node. It have a constructor that permits node creation from set of "namespace name", attributes and payload of text strings and other nodes. It does not natively support building node from text string and uses NodeBuilder class for that purpose. After creation node can be mangled in many ways so it can be completely changed. Also node can be serialised into string in one of two modes: default (where the textual representation of node describes it exactly) and "fancy" - with whitespace added to make indentation and thus make result more readable by human.

Node class have attribute FORCE_NODE_RECREATION that is defaults to False thus enabling fast node replication from the some other node. The drawback of the fast way is that new node shares some info with the "original" node that is changing the one node may influence the other. Though it is rarely needed (in xmpppy it is never needed at all since I'm usually never using original node after replication (and using replication only to move upwards on the classes tree).

Instance Methods | [hide private]

__init__(self, tag=None, attrs=`{``}`, payload=`[``]`, parent=None, node=None)
Takes "tag" argument as the name of node (prepended by namespace, if needed and separated from it by a space), attrs dictionary as the set of arguments, payload list as the set of textual strings and child nodes that this node carries within itself and "parent" argument that is another node that this one will be the child of.

source code

__str__(self, fancy=0) Method used to dump node into textual representation. | source code

getCDATA(self) Serialise node, dropping all tags and leaving CDATA intact. | source code

addChild(self, name=None, attrs=`{``}`, payload=`[``]`, namespace=None, node=None) If "node" argument is provided, adds it as child node. | source code

addData(self, data) Adds some CDATA to node. | source code

clearData(self) Removes all CDATA from the node. | source code

delAttr(self, key) Deletes an attribute "key" | source code

delChild(self, node, attrs=`{``}`) Deletes the "node" from the node's childs list, if "node" is an instance. | source code

getAttrs(self) Returns all node's attributes as dictionary. | source code

getAttr(self, key) Returns value of specified attribute. | source code

getChildren(self) Returns all node's child nodes as list. | source code

getData(self) Returns all node CDATA as string (concatenated). | source code

getName(self) Returns the name of node | source code

getNamespace(self) Returns the namespace of node | source code

getParent(self) Returns the parent of node (if present). | source code

getPayload(self) Return the payload of node i.e. | source code

getTag(self, name, attrs=`{``}`, namespace=None) Filters all child nodes using specified arguments as filter. | source code

getTagAttr(self, tag, attr) Returns attribute value of the child with specified name (or None if no such attribute). | source code

getTagData(self, tag) Returns cocatenated CDATA of the child with specified name. | source code

getTags(self, name, attrs=`{``}`, namespace=None, one=0) Filters all child nodes using specified arguments as filter. | source code

setAttr(self, key, val) Sets attribute "key" with the value "val". | source code

setData(self, data) Sets node's CDATA to provided string. | source code

setName(self, val) Changes the node name. | source code

setNamespace(self, namespace) Changes the node namespace. | source code

setParent(self, node) Sets node's parent to "node". | source code

setPayload(self, payload, add=0) Sets node payload according to the list specified. | source code

setTag(self, name, attrs=`{``}`, namespace=None) Same as getTag but if the node with specified namespace/attributes not found, creates such node and returns it. | source code

setTagAttr(self, tag, attr, val) Creates new node (if not already present) with name "tag" and sets it's attribute "attr" to value "val". | source code

setTagData(self, tag, val, attrs=`{``}`) Creates new node (if not already present) with name "tag" and (optionally) attributes "attrs" and sets it's CDATA to string "val". | source code

has_attr(self, key) Checks if node have attribute "key". | source code

__getitem__(self, item) Returns node's attribute "item" value. | source code

__setitem__(self, item, val) Sets node's attribute "item" value. | source code

__delitem__(self, item) Deletes node's attribute "item". | source code

__getattr__(self, attr) Reduce memory usage caused by T/NT classes - use memory only when needed. | source code

Class Variables | [hide private]

| FORCE_NODE_RECREATION = `0`

Method Details | [hide private]

### __init__(self, tag=None, attrs=`{``}`, payload=`[``]`, parent=None, node=None)
(Constructor)

source code

Takes "tag" argument as the name of node (prepended by namespace, if needed and separated from it by a space), attrs dictionary as the set of arguments, payload list as the set of textual strings and child nodes that this node carries within itself and "parent" argument that is another node that this one will be the child of. Also the __init__ can be provided with "node" argument that is either a text string containing exactly one node or another Node instance to begin with. If both "node" and other arguments is provided then the node initially created as replica of "node" provided and then modified to be compliant with other arguments.

### __str__(self, fancy=0)
(Informal representation operator)

source code

Method used to dump node into textual representation. if "fancy" argument is set to True produces indented output for readability.

### getCDATA(self)

source code

Serialise node, dropping all tags and leaving CDATA intact. That is effectively kills all formatiing, leaving only text were contained in XML.

### addChild(self, name=None, attrs=`{``}`, payload=`[``]`, namespace=None, node=None)

source code

If "node" argument is provided, adds it as child node. Else creates new node from the other arguments' values and adds it as well.

### delChild(self, node, attrs=`{``}`)

source code

Deletes the "node" from the node's childs list, if "node" is an instance. Else deletes the first node that have specified name and (optionally) attributes.

### getPayload(self)

source code

Return the payload of node i.e. list of child nodes and CDATA entries. F.e. for "<node>text1<nodea/><nodeb/> text2</node>" will be returned list: ['text1', <nodea instance>, <nodeb instance>, ' text2'].

### getTag(self, name, attrs=`{``}`, namespace=None)

source code

Filters all child nodes using specified arguments as filter. Returns the first found or None if not found.

### getTags(self, name, attrs=`{``}`, namespace=None, one=0)

source code

Filters all child nodes using specified arguments as filter. Returns the list of nodes found.

### setData(self, data)

source code

Sets node's CDATA to provided string. Resets all previous CDATA!

### setParent(self, node)

source code

Sets node's parent to "node". WARNING: do not checks if the parent already present and not removes the node from the list of childs of previous parent.

### setPayload(self, payload, add=0)

source code

Sets node payload according to the list specified. WARNING: completely replaces all node's previous content. If you wish just to add child or CDATA - use addData or addChild methods.