Statistics
| Branch: | Tag: | Revision:

root / docs / source / userdoc / xml.rst @ bbd4ce54

History | View | Annotate | Download (2.6 kB)

1 216bb34c Shikhar Bhushan
**********************
2 bbd4ce54 Shikhar Bhushan
:mod:`xml_` module
3 216bb34c Shikhar Bhushan
**********************
4 216bb34c Shikhar Bhushan
5 965788a7 Shikhar Bhushan
.. automodule:: ncclient.xml_
6 965788a7 Shikhar Bhushan
    :synopsis: XML facilities
7 216bb34c Shikhar Bhushan
8 216bb34c Shikhar Bhushan
Namespaces
9 216bb34c Shikhar Bhushan
==========
10 216bb34c Shikhar Bhushan
11 216bb34c Shikhar Bhushan
The following namespace is defined in this module.
12 216bb34c Shikhar Bhushan
13 216bb34c Shikhar Bhushan
.. autodata:: BASE_NS
14 216bb34c Shikhar Bhushan
15 216bb34c Shikhar Bhushan
Namespaces are handled just the same way as :mod:`~xml.etree.ElementTree`. So a qualified name takes the form *{namespace}tag*. There are some utility functions for qualified names:
16 216bb34c Shikhar Bhushan
17 216bb34c Shikhar Bhushan
.. function:: qualify(tag[, ns=BASE_NS])
18 216bb34c Shikhar Bhushan
    
19 216bb34c Shikhar Bhushan
    :returns: qualified name
20 216bb34c Shikhar Bhushan
21 216bb34c Shikhar Bhushan
.. function:: unqualify(tag)
22 216bb34c Shikhar Bhushan
    
23 216bb34c Shikhar Bhushan
    :returns: unqualified name
24 216bb34c Shikhar Bhushan
    
25 216bb34c Shikhar Bhushan
    .. note:: It is strongly recommended to compare qualified names.
26 216bb34c Shikhar Bhushan
27 216bb34c Shikhar Bhushan
.. _dtree:
28 216bb34c Shikhar Bhushan
29 216bb34c Shikhar Bhushan
DictTree XML representation
30 216bb34c Shikhar Bhushan
===========================
31 216bb34c Shikhar Bhushan
32 216bb34c Shikhar Bhushan
.. note::
33 216bb34c Shikhar Bhushan
    Where this representation is stipulated, an XML literal or :class:`~xml.etree.ElementTree.Element` is just fine as well.
34 216bb34c Shikhar Bhushan
35 216bb34c Shikhar Bhushan
:mod:`ncclient` can make use of a special syntax for XML based on Python dictionaries. It is best illustrated through an example::
36 216bb34c Shikhar Bhushan
    
37 216bb34c Shikhar Bhushan
    dtree = {
38 216bb34c Shikhar Bhushan
        'tag': qualify('a', 'some_namespace'),
39 216bb34c Shikhar Bhushan
        'attrib': {'attr': 'val'},
40 216bb34c Shikhar Bhushan
        'subtree': [ { 'tag': 'child1' }, { 'tag': 'child2', 'text': 'some text' } ]
41 216bb34c Shikhar Bhushan
    }
42 216bb34c Shikhar Bhushan
43 216bb34c Shikhar Bhushan
Calling :func:`dtree2xml` on *dtree* would return
44 216bb34c Shikhar Bhushan
45 216bb34c Shikhar Bhushan
.. code-block:: xml
46 216bb34c Shikhar Bhushan
47 216bb34c Shikhar Bhushan
    <?xml version="1.0" encoding="UTF-8"?>
48 216bb34c Shikhar Bhushan
    <ns0:a attr="val" xmlns:ns0="some_namespace">
49 216bb34c Shikhar Bhushan
        <child1 />
50 216bb34c Shikhar Bhushan
        <child2>some text</child2>
51 216bb34c Shikhar Bhushan
    </ns0:a>
52 216bb34c Shikhar Bhushan
    
53 216bb34c Shikhar Bhushan
In addition to a 'pure' dictionary representation a DictTree node (including the root) may be an XML literal or an :class:`~xml.etree.ElementTree.Element` instance. The above example could thus be equivalently written as::
54 216bb34c Shikhar Bhushan
55 216bb34c Shikhar Bhushan
    dtree2 = {
56 216bb34c Shikhar Bhushan
        'tag': '{ns}a',
57 216bb34c Shikhar Bhushan
        'attrib': {'attr': 'val'},
58 216bb34c Shikhar Bhushan
        'subtree': [ ET.Element('child1'), '<child2>some text</child2>' ]
59 216bb34c Shikhar Bhushan
    }
60 216bb34c Shikhar Bhushan
61 216bb34c Shikhar Bhushan
Converting between different representations
62 216bb34c Shikhar Bhushan
============================================
63 216bb34c Shikhar Bhushan
64 216bb34c Shikhar Bhushan
Conversions *to* DictTree representation are guaranteed to be entirely dictionaries. In converting *from* DictTree representation, the argument may be any valid representation as specified.
65 216bb34c Shikhar Bhushan
66 216bb34c Shikhar Bhushan
.. autofunction:: dtree2ele(spec)
67 216bb34c Shikhar Bhushan
68 216bb34c Shikhar Bhushan
.. autofunction:: dtree2xml(spec[, encoding="UTF-8"])
69 216bb34c Shikhar Bhushan
70 216bb34c Shikhar Bhushan
.. autofunction:: ele2dtree(ele)
71 216bb34c Shikhar Bhushan
    
72 216bb34c Shikhar Bhushan
.. autofunction:: ele2xml(ele)
73 216bb34c Shikhar Bhushan
74 216bb34c Shikhar Bhushan
.. autofunction:: xml2dtree(xml)
75 216bb34c Shikhar Bhushan
76 216bb34c Shikhar Bhushan
.. autofunction:: xml2ele(xml)
77 216bb34c Shikhar Bhushan
78 216bb34c Shikhar Bhushan
Other utility functions
79 216bb34c Shikhar Bhushan
========================
80 216bb34c Shikhar Bhushan
81 216bb34c Shikhar Bhushan
.. autofunction:: iselement(obj)
82 216bb34c Shikhar Bhushan
83 216bb34c Shikhar Bhushan
    :see: :meth:`xml.etree.ElementTree.iselement`
84 216bb34c Shikhar Bhushan
85 216bb34c Shikhar Bhushan
.. autofunction:: find(ele, tag[, nslist=[]])
86 216bb34c Shikhar Bhushan
87 216bb34c Shikhar Bhushan
.. autofunction:: parse_root(raw)
88 216bb34c Shikhar Bhushan
89 216bb34c Shikhar Bhushan
.. autofunction:: validated_element(rep, tag=None, attrs=None, text=None)
90 216bb34c Shikhar Bhushan
91 216bb34c Shikhar Bhushan
92 216bb34c Shikhar Bhushan
Errors
93 216bb34c Shikhar Bhushan
======
94 216bb34c Shikhar Bhushan
95 216bb34c Shikhar Bhushan
.. autoexception:: ContentError
96 216bb34c Shikhar Bhushan
    :show-inheritance:
97 216bb34c Shikhar Bhushan
    :members: