def on_packagelist_cursor_changed(self, widget, data=None): (tree, cursor) = self.pkgview.get_selection().get_selected() resources_file = resolve_res(tree.get_value(cursor, 1)) resources = ElementTree() resources.parse(resources_file['xml']) self.res.clear() for resource in resources.iterfind('item'): res_file = resolve_res(resource.text) res_in = [s for s in drawable_specifiers if s in res_file] if 'png' in res_file: res_img = gtk.gdk.pixbuf_new_from_file(res_file['png']) elif res_in: res_img = gtk.gdk.pixbuf_new_from_file(res_file[res_in[0]]) elif 'xml' in res_file: # trace into this file deep_res = ElementTree() deep_res.parse(res_file['xml']) res_img = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, 1, 1) for item in deep_res.iterfind('item'): if nsify('drawable') in item.attrib: res_img = gtk.gdk.pixbuf_new_from_file(resolve_res(item.attrib[nsify('drawable')])['png']) else: res_img = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, 1, 1) self.res.append([ resource.attrib['name'], resource.text, res_img, ])
def on_opentheme_activate(self, widget, data=None): manifest_file = 'themes/Cyanbread/AndroidManifest.xml' manifest = ElementTree() manifest.parse(manifest_file) for prospect in manifest.iterfind('theme/meta-data'): if prospect.attrib[nsify('name')] == 'com.tmobile.theme.redirections': redirections_id = prospect.attrib[nsify('resource')] break redirections_file = resolve_res(redirections_id)['xml'] redirections = ElementTree() redirections.parse(redirections_file) for redir in redirections.iterfind('package-redirections'): self.pkgs.append([redir.attrib[nsify('name')], redir.attrib[nsify('resource')]])
def parse_multiStop(urlArray, origin): depTimes=[] for urlPath in urlArray: try: xmlTree = ET(file=urllib2.urlopen(urlPath)) # Check to see if there are any predictions at all # If attribute(dirTitleBecauseNoPredictions) exists, then there are no predictions. for node in xmlTree.iterfind('predictions'): #Get stop tag route_title = node.get('routeTitle') stop_tag = node.get('stopTag') #Create list of departure predictions if node.find('direction') is not None: times=[] for prediction in node.find('direction'): #predictions/direction/prediction times.append(prediction.get('minutes')) listElem = Element('Predictions') stopElem = SubElement(listElem,'Stop') stopElem.set('tag', stop_tag) stopElem.set('times', times) stopElem.set('route', route_title) stopElem.set('direction', node.find('direction').get('title').__str__()) # Insert in sorted order to depTimes depTimes = insertTimes(depTimes, listElem, origin) except HTTPError as e: print e print urlPath exit(1) return depTimes
def parse_joints_from_urdf_etree(self, urdf: ElementTree): for joint_element in urdf.iterfind('joint'): joint = Joint(joint_element.get('name'), joint_element.get('type', 'fixed')) origin = self._get_origin_from_urdf_element(joint_element) limit_element = joint_element.find('limit') axis = [1., 0., 0.] if joint_element.find('axis') == None \ else np.array([float(f) for f in joint_element.find('axis').get('xyz', '1 0 0').split()]) alignment_transform = (np.zeros(3), quat_between_two_vectors( np.array([1., 0., 0.]), axis)) self.add_joint( joint_element.find('parent').get('link'), joint_element.find('child').get('link'), joint, local_pose0=multiply_transformations(origin, alignment_transform), local_pose1=alignment_transform, lower_limit=float(limit_element.get('lower')) if limit_element is not None else None, upper_limit=float(limit_element.get('upper')) if limit_element is not None else None, )
def getTestsField(filename,field): from xml.etree.ElementTree import ElementTree r = dict() doc = ElementTree(file=filename) for test in doc.iterfind('.//test'): if test.find('result').text=="ok": testName=test.attrib['id'] r[testName]=test.find(field).text return r
def _make_curies(self, tree: etree.ElementTree): curies = {} # Extract `oboInOwl:id` or compact IRI for `owl:Class` for elem in tree.iterfind(_NS["owl"]["Class"]): iri = elem.get(_NS["rdf"]["about"]) if iri is None: continue e = elem.find(_NS["oboInOwl"]["id"]) id_: str = e.text if e is not None and e.text else self._compact_id(iri) curies[iri] = id_ # Extract either `oboInOwl:shorthand` or `oboInOwl:id` for `owl:ObjectProperty` for elem in tree.iterfind(_NS["owl"]["ObjectProperty"]): iri = elem.get(_NS["rdf"]["about"]) if iri is None: continue # attempt to extract the compact id of the term elem_id = elem.find(_NS["oboInOwl"]["id"]) elem_sh = elem.find(_NS["oboInOwl"]["shorthand"]) if elem_sh is not None and elem_sh.text is not None: curies[iri] = elem_sh.text elif elem_id is not None and elem_id.text is not None: curies[iri] = elem_id.text else: curies[iri] = self._compact_id(iri) # Compact IRI of owl:AnnotationProperty for elem in tree.iterfind(_NS["owl"]["AnnotationProperty"]): iri = elem.get(_NS["rdf"]["about"]) if iri is None: continue # attempt to extract the compact id of the term elem_id = elem.find(_NS["oboInOwl"]["id"]) elem_sh = elem.find(_NS["oboInOwl"]["shorthand"]) if elem_sh is not None and elem_sh.text is not None: curies[iri] = elem_sh.text elif elem_id is not None and elem_id.text is not None: curies[iri] = elem_id.text else: curies[iri] = self._compact_id(iri) return curies
def tweets(self): tweets = [] try: fileHandle = urllib2.urlopen(self._url) tree = ElementTree() tree.parse(fileHandle) tweets = [ Tweet(statusEl) for statusEl in tree.iterfind("status") ] except IOError: pass return tweets
def parse_stops(): for route in Route.objects.all(): try: stopList = ET(file=urllib2.urlopen("http://webservices.nextbus.com/service/publicXMLFeed?command=routeConfig&a={0}&r={1}".format(route.agency.agency_tag, route.tag))) for child in stopList.iterfind('route/stop'): print child.attrib s = Stop(tag = child.get('tag'), title = child.get('title'), short_title = child.get('shortTitle'), point = Point(float(child.get('lat')), float(child.get('lon'))), stop_id = child.get('stopId') ,route = route) s.save() except urllib2.URLError as e: print "unable to connect to url for agency"# {0}, {1}".format(route.agency.agency_tag, route.tag) print e except: print 'tag:{0}, title:{1}, shortTitle:{2}'.format(child.get('tag'), child.get('title'), child.get('shortTitle')) return
def parse_links_from_urdf_etree(self, urdf: ElementTree, mesh_root_folder: Path, use_random_collision_colors=False): for link_element in urdf.iterfind('link'): link = Link(link_element.get('name'), RigidDynamic()) collision_shapes = [] for collision_element in link_element.iterfind('collision'): collision_shapes += self._parse_shapes( collision_element, mesh_root_folder=mesh_root_folder) visual_not_simulated = sum(1 for _ in link_element.iterfind( 'visual')) != 0 and len(collision_shapes) != 0 visual_shapes = [] for visual_element in link_element.iterfind('visual'): visual_shapes += self._parse_shapes( visual_element, mesh_root_folder=mesh_root_folder, global_materials=self.materials, set_visual_mesh_userdata=True, sphere_instead_of_mesh=visual_not_simulated) """ Color collision shapes based on the colors used in visual shapes. """ if not use_random_collision_colors: visual_colors = [ s.get_user_data()['color'] for s in visual_shapes if s.get_user_data() is not None and 'color' in s.get_user_data() ] if len(visual_colors) > 0: mean_visual_color = np.mean(visual_colors, axis=0) for s in collision_shapes: URDFRobot.shape_update_user_data( s, 'color', mean_visual_color) """ Ignore simulation of visual shape and rendering of collision if both are specified. """ if visual_not_simulated: for s in visual_shapes: s.set_flag(ShapeFlag.SIMULATION_SHAPE, False) for s in collision_shapes: s.set_flag(ShapeFlag.VISUALIZATION, False) for s in visual_shapes + collision_shapes: link.actor.attach_shape(s) link.actor.set_mass(self._parse_mass(link_element)) self.add_link(link)
def get_elem_with_attr(self, xml_file, elem_name, attr_list=[]): elem_list = [] tree = ElementTree(file=xml_file) for node in tree.iterfind(elem_name): flag = True for attr in attr_list: if '=' in attr: if node.get(attr.split('=')[0]) != attr.split('=')[1]: flag = False continue else: if node.get(attr) is None: flag = False continue if flag: elem_list.append(node) return elem_list
class PolishXMLTagConverter: def __init__(self, pos_convert_table): self.tree = ElementTree() self.pos_convert_table = {} with open(pos_convert_table, 'r') as f: for line in f: original, pos, tags = line.split() pos_tags = {'Pos': pos} if tags != '_': for pos_tag in tags.split('|'): tag, value = pos_tag.split('=') pos_tags[tag] = value self.pos_convert_table[original] = pos_tags def load(self, fileobj): self.tree.parse(fileobj) self.sentences = [] for xmlsentence in self.tree.iterfind("chunk/sentence"): sentence = {'text': []} i = -1 for tok in xmlsentence: if tok.tag != 'tok': continue i += 1 value = tok.find('orth').text ctag = tok.find('lex/ctag').text sentence['text'] += [value] for tag, val in self.convertTag(ctag).iteritems(): tag = tag.lower() val = val.lower() if not tag in sentence: sentence[tag] = {} sentence[tag][i] = val if sentence['text'] == ['.']: print(sentence['text']) continue self.sentences += [sentence] return self.sentences def convertTag(self, tag): return self.pos_convert_table.get(tag, {'Pos': 'X'}) def tagSentence(self, words): pass
def xmlRecords(schema: tab.Schema, doc: XML.ElementTree, path: str, ns: Dict[str, str], eltRecords: Opt[RecordMaker] = None, simpleContent: bool = False) -> Iterator[Dict[str, Opt[tab.Value]]]: """ >>> schema = eltSchema(XSD.the(NAACCR1.ItemDef, '*')) >>> ea = xmlRecords(doc=NAACCR1.ndd180, schema=schema, ... path='./n:ItemDefs/n:ItemDef', ... ns=NAACCR1.ns) >>> list(ea)[:3] ... # doctest: +NORMALIZE_WHITESPACE +ELLIPSIS [{'naaccrId': 'recordType', 'naaccrNum': 10, ...}, {'naaccrId': 'registryType', 'naaccrNum': 30, ...}, {'naaccrId': 'naaccrRecordVersion', 'naaccrNum': 50, ...}] """ getRecords = eltRecords or eltDict data = (record for elt in doc.iterfind(path, ns) for record in getRecords(elt, schema, simpleContent)) return data
# start of this month. current_date = start_date = datetime.date(2010, 7, 1) day = datetime.timedelta(days=1) end_date = datetime.date.today() pv_data = [] for i in range((end_date - start_date).days): try: html = html_for_day(current_date) except urllib2.URLError, e: continue finally: current_date = current_date + day tree = ElementTree() tree.parse(handle_illformed_xml(html)) items = tree.iterfind('item') pv_data.extend(map(item_to_tuple, items)) pv = DataFrame.from_records(pv_data, index='timestamp', columns=["timestamp", "expost"]) fig = pyplot.figure() rolling_max(pv, 4*24*30).plot(rot=15) pyplot.title("Solar Photovoltaic production in Amprion's network Germany") pyplot.ylabel("Rolling month maximum power produced [MW]") pyplot.xlabel("Date") pyplot.grid() pyplot.savefig('ampiron.png')
tree = ElementTree() if (len(argv) < 3): print "specify an input & output filename. input is osm, output is geojson" exit() tree.parse(argv[1]) geojson = { "type": "FeatureCollection", "features": [] } nodeidx = {} print 'mapping nodes' for n in tree.iterfind('node'): nodeidx[n.attrib['id']] = [float(n.attrib['lon']), float(n.attrib['lat'])] print 'mapping ways' # okay, so a way is like: # <way ... user='******' visible='true' version='4' ...> # <nd ref='290905840' /> # ... more nodes # <tag k='name' v='San Bonifacio' /> # ... more tags # </way> for w in tree.iterfind('way'): # okay, so there aren't that many tags for ways, # so just find them all instead of trying some janky XPath magic tags = {}
import json tree = ElementTree() if (len(argv) < 3): print "specify an input & output filename, and year. input is osm, output is geojson" exit() tree.parse(argv[1]) geojson = { "type": "FeatureCollection", "features": [] } nodeidx = {} print 'mapping nodes' for n in tree.iterfind('node'): if (n.attrib.has_key('user')): pt = { "type": "Feature", "geometry": { "type": 'Point', "coordinates": [float(n.attrib['lon']), float(n.attrib['lat'])] }, "properties": { "user": n.attrib['user'], "version": n.attrib['version'], "timestamp": time.mktime(datetime.strptime(n.attrib['timestamp'], '%Y-%m-%dT%H:%M:%SZ').utctimetuple()) } } geojson['features'].append(pt)
import json tree = ElementTree() if (len(argv) < 3): print "specify an input & output filename, and year. input is osm, output is geojson" exit() tree.parse(argv[1]) geojson = {"type": "FeatureCollection", "features": []} nodeidx = {} print 'mapping nodes' for n in tree.iterfind('node'): if (n.attrib.has_key('user')): pt = { "type": "Feature", "geometry": { "type": 'Point', "coordinates": [float(n.attrib['lon']), float(n.attrib['lat'])] }, "properties": { "user": n.attrib['user'], "version": n.attrib['version'], "timestamp":
class Parse: u""" 传入接口参数xml文件,name 最终获取需要的参数 """ def __init__(self, name): u""" :param name:xml具体文件,以data为根目录 """ self._log = Database.logging self._name = name self._path = os.getcwd().split( 'interface')[0] + 'interface' + os.sep + 'data' + os.sep self._file = self._path + self._name self._log.info(u'解析参数文件: %s' % self._file) self._tree = ElementTree(file=self._file) def _parse_xml(self): u""" 解析xml,获取所有二层节点,根据节点拼接正则 :return: 正则模型pattern 如['<test1>(.*?)</test1>', '<node2>(.*?)</node2>'] """ roots = self._tree.getroot() pattern = [] for node in roots: patt = '<%s>(.*?)</%s>' % (node.tag, node.tag) pattern.append(patt) return pattern def _get_parm(self, pattern): u""" 通过正则匹配到标签,获取标签下数据,返回数据即接口参数 :param pattern: 要匹配的正则,例如<Manufacturer>(.*?)</Manufacturer> :return: 获取到的参数,queryinfo,便签下的全部数据 """ try: with open(self._file, 'r', encoding='utf8') as f: content = ''.join([i.strip() for i in f.readlines()]) matches = re.findall(pattern, content) self._log.info(u'获取参数:%s' % matches) return matches except FileNotFoundError as msg: self._log.error(msg) def _get_total(self): u""" 获得response中总记录条数 :return: 返回记录数count(1) """ for elem in self._tree.iterfind('Record1/TotalCount'): total = elem.text try: self._log.info('parse xml get total:%s' % total) return total except UnboundLocalError as msg: self._log.error('there\'re no total node. The error message:%s' % msg) def _get_tag_value(self, node): u""" 获取某标签中的value值,将标签名称为此的value写入list中 :param node: 具体node参数 :return: 返回最终值组成的list """ result = [] for elem in self._tree.iterfind(node): result.append(elem.text) # logging.info('paras xml get tag value %s' % result) return result def _set_current_page(self, node, page): u""" 修改显示的当前页数,实现翻页 :param node: 要修改页数的二层根节点,string :param page: 修改成第page页 :return: 重写xml文件 """ full_node = node + '/SqlQuery/PageInfo/CurrentPage' for elem in self._tree.iterfind(full_node): elem.text = str(page) with open(self._file, 'wb') as f: self._tree.write(f, encoding='UTF-8', xml_declaration=True) def update_value(self, node, value): u""" 修改xml内容 :param node: 具体要修改的标签 :param value: 修改后的值 :return: 重写xml文件 """ for elem in self._tree.iterfind(node): elem.text = str(value) with open(self._file, 'wb') as f: self._tree.write(f, encoding='UTF-8', xml_declaration=True) def get_case_param(self, total=0, change=0, page=1, tag='', para='queryInfo'): u""" 封装xml各方法,实现参数、标签值的获取和xml的改变 :param total: 是否计算total,一般与result.xml合用,1是获取,0不获取,默认为不获取 :param change: 是否改变xml,一般与非结果xml合用,1为改变,默认为0不改变,改变显示页数 :param page: 为当前页数current,page为改变值 :param tag: 标签名称,例如'Record/MAN_ID','Manufacturer' :param para: 拼凑xml参数时,key的值,默认为queryInfo :return: 返回取值结果,接口参数param,total值 re, """ if self._name != 'result.xml' and change == 0: # 获取接口参数,访问接口,返回结果result pattern = self._parse_xml() try: for pat in pattern: if tag in pat: self._log.info(u'匹配正则: %s' % pat) param = self._get_parm(pat) parm = {para: param} return parm except UnboundLocalError as msg: self._log.error(u'没有匹配到正则,获取参数失败。error:%' % msg) elif self._name != 'result.xml' and change == 1: self._set_current_page(tag, page) elif self._name == 'result.xml' and total == 1: # 解析结果文件,用以断言 amount = self._get_total() # 获取total值 return amount else: tag_value = self._get_tag_value(tag) return tag_value
tree = ElementTree() if (len(argv) < 3): print "specify an input & output filename. input is osm, output is geojson" exit() tree.parse(argv[1]) geojson = {"type": "FeatureCollection", "features": []} nodeidx = {} print 'mapping nodes' for n in tree.iterfind('node'): nodeidx[n.attrib['id']] = [float(n.attrib['lon']), float(n.attrib['lat'])] print 'mapping ways' # okay, so a way is like: # <way ... user='******' visible='true' version='4' ...> # <nd ref='290905840' /> # ... more nodes # <tag k='name' v='San Bonifacio' /> # ... more tags # </way> for w in tree.iterfind('way'): # okay, so there aren't that many tags for ways, # so just find them all instead of trying some janky XPath magic tags = {}