; docformat = 'rst' ;+ ; Use the IDL DOM parser to parse the planets.xml XML file. ;- ;+ ; Routine to recursively parse the DOM tree. ; ; :Params: ; node : in, required, type=object ; DOM tree node ; names : in, out, required, type=strarr ; planet names encountered so far ;- pro mg_planets, node, names compile_opt strictarr tag = node->getNodeName() if (obj_isa(node, 'IDLffXMLDOMElement')) then begin if (strlowcase(node->getTagName()) eq 'planet') then begin name = node->getAttribute('NAME') names = n_elements(names) eq 0L ? name : [names, name] endif endif child = node->getFirstChild() while (obj_valid(child)) do begin mg_planets, child, names child = child->getNextSibling() endwhile end ; Example of using the IDL DOM parser to parse the planets.xml XML file. domPlanets = obj_new('IDLffXMLDOMDocument') domPlanets->load, filename=filepath('planets.xml', subdir=['examples', 'data']) mg_planets, domPlanets, names print, 'Planets:' print, '--------' print, transpose(names) obj_destroy, domPlanets end