Package pyxmpp :: Module xmlextra
[hide private]

Module xmlextra

source code

Extension to libxml2 for XMPP stream and stanza processing
Classes [hide private]
  StreamHandler
Base class for stream handler.
  _SAXCallback
SAX events handler for the python-only stream parser.
  _PythonReader
Python-only stream reader.
  StreamReader
A simple push-parser interface for XML streams.
Functions [hide private]
 
_escape(data)
Escape data for XML
source code
 
_get_ns(node)
Get namespace of node.
source code
 
replace_ns(node, old_ns, new_ns)
Replace namespaces in a whole subtree.
source code
libxml2.xmlNs
get_node_ns(xmlnode)
Namespace of an XML node.
source code
unicode
get_node_ns_uri(xmlnode)
Return namespace URI of an XML node.
source code
 
xml_node_iter(nodelist)
Iterate over sibling XML nodes.
source code
 
xml_element_iter(nodelist)
Iterate over sibling XML elements.
source code
 
xml_element_ns_iter(nodelist, ns_uri)
Iterate over sibling XML elements.
source code
 
remove_evil_characters(s)
Remove control characters (not allowed in XML) from a string.
source code
string
safe_serialize(xmlnode)
Serialize an XML element making sure the result is sane.
source code
Variables [hide private]
  common_doc = libxml2.newDoc("1.0")
  common_root = common_doc.newChild(None, "root", None)
  COMMON_NS = 'http://pyxmpp.jajcus.net/xmlns/common'
  common_ns = common_root.newNs(COMMON_NS, None)
  logger = logging.getLogger("pyxmpp.xmlextra")
  pure_python = False
  evil_characters_re = re.compile(r'(?u)[\x00-\x08\v\f\x0e-\x1f]')
  utf8_replacement_char = '\xef\xbf\xbd'
  bad_nsdef_replace_re = re.compile(r'^([^<]*<[^><]*\s+)(xmlns=(...
  __package__ = 'pyxmpp'

Imports: sys, libxml2, threading, re, logging, StreamParseError, _xmlextra, error, _create_reader


Function Details [hide private]

_get_ns(node)

source code 

Get namespace of node.

assigned. :returntype: libxml2.xmlNs

Returns:
the namespace object or None if the node has no namespace

replace_ns(node, old_ns, new_ns)

source code 

Replace namespaces in a whole subtree.

The old namespace declaration will be removed if present on the node.

Both old_ns and new_ns may be None meaning no namespace set.

Parameters:
  • node (: libxml2.xmlNode) - : the root of the subtree where namespaces should be replaced.
  • old_ns (: libxml2.xmlNs) - : the namespace to replace.
  • new_ns (: libxml2.xmlNs) - : the namespace to be used instead of old_ns.

get_node_ns(xmlnode)

source code 
Namespace of an XML node.
Parameters:
  • xmlnode (: libxml2.xmlNode) - : the XML node to query.
Returns: libxml2.xmlNs
namespace of the node or None

get_node_ns_uri(xmlnode)

source code 
Return namespace URI of an XML node.
Parameters:
  • xmlnode (: libxml2.xmlNode) - : the XML node to query.
Returns: unicode
namespace URI of the node or None

xml_node_iter(nodelist)

source code 

Iterate over sibling XML nodes. All types of nodes will be returned (not only the elements).

Usually used to iterade over node's children like this:

xml_node_iter(node.children)
Parameters:
  • nodelist (: libxml2.xmlNode) - : start node of the list.

xml_element_iter(nodelist)

source code 

Iterate over sibling XML elements. Non-element nodes will be skipped.

Usually used to iterade over node's children like this:

xml_node_iter(node.children)
Parameters:
  • nodelist (: libxml2.xmlNode) - : start node of the list.

xml_element_ns_iter(nodelist, ns_uri)

source code 

Iterate over sibling XML elements. Only elements in the given namespace will be returned.

Usually used to iterade over node's children like this:

xml_node_iter(node.children)
Parameters:
  • nodelist (: libxml2.xmlNode) - : start node of the list.

safe_serialize(xmlnode)

source code 

Serialize an XML element making sure the result is sane.

Remove control characters and invalid namespace declarations from the result string.

Parameters:
  • xmlnode (: libxml2.xmlNode) - : the XML element to serialize.
Returns: string
UTF-8 encoded serialized and sanitized element.

Variables Details [hide private]

bad_nsdef_replace_re

Value:
re.compile(r'^([^<]*<[^><]*\s+)(xmlns=(("[^"]*")|(\'[^\']*\')))')