box_interface_parser.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 
6 
7 import xml.sax
8 
9 import converter.xar_types as xar_types
10 
11 import converter.node.box_interface as node_box_interface
12 import converter.node.bitmap_v2 as node_bitmap_v2
13 import converter.node.parameter as node_parameter
14 import converter.node.box_content as node_box_content
15 
16 
18  """ Generates the reprenstation of the file designed by filename
19  in memory. Build a tree.
20 
21  :param filename: name of the file to parse
22  :returns: the tree representing the file
23  """
24  parser = xml.sax.make_parser()
25  handler = BoxInterfaceHandler()
26  parser.setContentHandler(handler)
27  parser.parse(open(filename))
28 
29  root_node = handler.get_root()
30  if root_node.format_version != "4":
31  return None
32 
33  return root_node
34 
35 
36 class BoxInterfaceHandler(xml.sax.handler.ContentHandler):
37  """ ContentHandler to parse the Box interface XML file
38  """
39 
40  def __init__(self):
41  xml.sax.handler.ContentHandler.__init__(self)
42  self._nodes = []
43  self._root = None
44 
45  def startElement(self, name, attrs):
46  new_node = None
47  if name == 'BoxInterface':
48  new_node = node_box_interface.BoxInterface(
49  xar_types.attributes(attrs))
50  elif name == 'Bitmap':
51  new_node = node_bitmap_v2.BitmapV2(xar_types.attributes(attrs))
52  elif name == 'Parameter':
53  new_node = node_parameter.Parameter(xar_types.attributes(attrs))
54  elif name == 'Content':
55  new_node = node_box_content.BoxContent(xar_types.attributes(attrs))
56 
57  if new_node:
58  if not self._root:
59  self._root = new_node
60  # Attach to parent here
61  if self._nodes:
62  parent_node = self._nodes.pop()
63  parent_node.attach_attribute(name, new_node)
64  parent_node.add_child(new_node)
65  self._nodes.append(parent_node)
66 
67  self._nodes.append(new_node)
68  else:
69  parent_node = self._nodes.pop()
70  parent_node.attach_attribute(name,
71  xar_types.attributes(attrs))
72  self._nodes.append(parent_node)
73 
74  def endElement(self, name):
75  if (name == 'BoxInterface'
76  or name == 'Parameter'
77  or name == 'Content'
78  or name == 'Bitmap'):
79  self._nodes.pop()
80 
81  def get_root(self):
82  return self._root
converter.box_interface_parser.BoxInterfaceHandler.__init__
def __init__(self)
Definition: box_interface_parser.py:40
converter.box_interface_parser.BoxInterfaceHandler.startElement
def startElement(self, name, attrs)
Definition: box_interface_parser.py:45
converter.box_interface_parser.BoxInterfaceHandler._nodes
_nodes
Definition: box_interface_parser.py:42
converter.node.box_interface
Definition: box_interface.py:1
converter.xar_types
Definition: xar_types.py:1
converter.node.parameter
Definition: parameter.py:1
converter.box_interface_parser.BoxInterfaceHandler.get_root
def get_root(self)
Definition: box_interface_parser.py:81
converter.node.bitmap_v2
Definition: bitmap_v2.py:1
converter.xar_types.attributes
Copyright (c) 2012 Aldebaran Robotics.
Definition: xar_types.py:12
converter.box_interface_parser.BoxInterfaceHandler._root
_root
Definition: box_interface_parser.py:43
converter.box_interface_parser.BoxInterfaceHandler.endElement
def endElement(self, name)
Definition: box_interface_parser.py:74
converter.node.box_content
Definition: box_content.py:1
converter.box_interface_parser.BoxInterfaceHandler
Definition: box_interface_parser.py:36
converter.box_interface_parser.generate_tree_from_filename
def generate_tree_from_filename(filename)
Definition: box_interface_parser.py:17


naoqi_libqicore
Author(s): Aldebaran
autogenerated on Wed Sep 14 2022 02:22:41