| # test from https://github.com/CESNET/libyang-python/blob/master/README.rst |
| |
| import libyang |
| from xml.etree import ElementTree |
| |
| ctx = libyang.Context() |
| |
| module = ctx.parse_module_str(''' |
| module example { |
| namespace "urn:example"; |
| prefix "ex"; |
| container data { |
| list interface { |
| key name; |
| leaf name { |
| type string; |
| } |
| leaf address { |
| type string; |
| } |
| } |
| leaf hostname { |
| type string; |
| } |
| } |
| } |
| ''') |
| |
| node = module.parse_data_dict({ |
| 'data': { |
| 'hostname': 'foobar', |
| 'interface': [ |
| {'name': 'eth0', 'address': '1.2.3.4/24'}, |
| {'name': 'lo', 'address': '127.0.0.1'}, |
| ], |
| }, |
| }) |
| |
| xml = node.print_mem('xml', pretty=True) |
| tree = ElementTree.fromstringlist(xml) |
| assert tree.tag == '{urn:example}data' |
| assert tree.find('.//{*}hostname').text == 'foobar' |
| assert len(tree.find('.//{*}interface')) == 2 |
| |
| node.free() |
| ctx.destroy() |