From: Reed Moran Date: Wed, 21 Jan 2009 01:42:12 +0000 (+0000) Subject: testing parsing file initial check in X-Git-Tag: sfa-0.9-0@14641~739 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=e3257a244dd373ddfec25793dab49f2782aa978c;p=sfa.git testing parsing file initial check in --- diff --git a/rspec/testparse.py b/rspec/testparse.py new file mode 100644 index 00000000..dbce6195 --- /dev/null +++ b/rspec/testparse.py @@ -0,0 +1,44 @@ +"""Read in a DOM instance, convert it to a Python object +""" +from xml.dom.utils import FileReader + +class PyObject: pass + +def pyobj_printer(py_obj, level=0): + """Return a "deep" string description of a Python object""" + from string import join, split + import types + descript = '' + for membname in dir(py_obj): + member = getattr(py_obj,membname) + if type(member) == types.InstanceType: + descript = descript + (' '*level) + '{'+membname+'}\n' + descript = descript + pyobj_printer(member, level+3) + elif type(member) == types.ListType: + descript = descript + (' '*level) + '['+membname+']\n' + for i in range(len(member)): + descript = descript+(' '*level)+str(i+1)+': '+ \ + pyobj_printer(member[i],level+3) + else: + descript = descript + membname+'=' + descript = descript + join(split(str(member)[:50]))+'...\n' + return descript + +def pyobj_from_dom(dom_node): + """Converts a DOM tree to a "native" Python object""" + py_obj = PyObject() + py_obj.PCDATA = '' + for node in dom_node.get_childNodes(): + if node.name == '#text': + py_obj.PCDATA = py_obj.PCDATA + node.value + elif hasattr(py_obj, node.name): + getattr(py_obj, node.name).append(pyobj_from_dom(node)) + else: + setattr(py_obj, node.name, [pyobj_from_dom(node)]) + return py_obj + +# Main test +dom_obj = FileReader("sample_rspec.xml").document +py_obj = pyobj_from_dom(dom_obj) +if __name__ == "__main__": + print pyobj_printer(py_obj) \ No newline at end of file