{"id":726,"date":"2010-09-05T15:23:01","date_gmt":"2010-09-05T18:23:01","guid":{"rendered":"http:\/\/tangopardo.com.ar\/2cf7\/?p=726"},"modified":"2010-09-05T15:23:01","modified_gmt":"2010-09-05T18:23:01","slug":"editando-svg-con-python","status":"publish","type":"post","link":"https:\/\/tangopardo.com.ar\/2cf7\/2010\/09\/05\/editando-svg-con-python","title":{"rendered":"Editando svg con python."},"content":{"rendered":"<p>Para que no me olvide que es f\u00e1cil y no tengo que usar BeautifulSoup. Seg\u00fan <a href=\"http:\/\/josephhall.org\/nqb2\/index.php\/2010\/02\/13\/flwdchrplth\">este art\u00edculo<\/a> haciendo un par de cositas deber\u00eda funcionar pero en mi caso el svg resultante de hacer renderContents() o str() ten\u00eda un par de errores.<\/p>\n<p>As\u00ed que a usar etree, no es tan complicado. En <a href=\"http:\/\/stackoverflow.com\/questions\/2359317\/how-to-find-elements-by-id-field-in-svg-file-using-python\">esta pregunta de StackOverflow<\/a> explican bastante bien c\u00f3mo trabajarlo.<\/p>\n<p><code><br \/>\nfrom lxml import etree<\/p>\n<p>nsmap = {<br \/>\n        'sodipodi': 'http:\/\/sodipodi.sourceforge.net\/DTD\/sodipodi-0.dtd',<br \/>\n        'cc': 'http:\/\/web.resource.org\/cc\/',<br \/>\n        'svg': 'http:\/\/www.w3.org\/2000\/svg',<br \/>\n        'dc': 'http:\/\/purl.org\/dc\/elements\/1.1\/',<br \/>\n        'xlink': 'http:\/\/www.w3.org\/1999\/xlink',<br \/>\n        'rdf': 'http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#',<br \/>\n        'inkscape': 'http:\/\/www.inkscape.org\/namespaces\/inkscape'<br \/>\n}<\/p>\n<p>template='calendario_2010.svg'<br \/>\nf = open(template)<br \/>\ndata = f.read()<br \/>\nf.close()<br \/>\ntree = etree.XML(data)<\/p>\n<p>#xpath devuelve una lista.<br \/>\ntnombre = tree.xpath('\/\/svg:text[@id=\"txt_nom\"]\/svg:tspan',namespaces=nsmap)[0]<br \/>\ntnombre.text = 'nombre_alumno'<\/p>\n<p>#cajas de texto hijas de un grupo \"tlunes\"<br \/>\nlunes = tree.xpath('\/\/svg:g[@id=\"tlunes\"]\/svg:text\/svg:tspan', namespaces=nsmap)<\/p>\n<p>#hacer algo...<br \/>\nfor hora in lunes:<br \/>\n        hora.text = 'saraza'<\/p>\n<p>#guardar...<br \/>\nf = open('salida.svg','w')<br \/>\nf.write(etree.tostring(tree))<br \/>\nf.close()<br \/>\n<\/code><\/p>\n<p>o algo asi&#8230; viendo la doc de lxml hay un mont\u00f3n de cosas mal usadas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para que no me olvide que es f\u00e1cil y no tengo que usar BeautifulSoup. Seg\u00fan este art\u00edculo haciendo un par de cositas deber\u00eda funcionar pero en mi caso el svg resultante de hacer renderContents() o str() ten\u00eda un par de errores. As\u00ed que a usar etree, no es tan complicado. En esta pregunta de StackOverflow [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[37,4],"tags":[],"class_list":["post-726","post","type-post","status-publish","format-standard","hentry","category-facultad","category-python"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pmnbC-bI","_links":{"self":[{"href":"https:\/\/tangopardo.com.ar\/2cf7\/wp-json\/wp\/v2\/posts\/726","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tangopardo.com.ar\/2cf7\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tangopardo.com.ar\/2cf7\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tangopardo.com.ar\/2cf7\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tangopardo.com.ar\/2cf7\/wp-json\/wp\/v2\/comments?post=726"}],"version-history":[{"count":4,"href":"https:\/\/tangopardo.com.ar\/2cf7\/wp-json\/wp\/v2\/posts\/726\/revisions"}],"predecessor-version":[{"id":730,"href":"https:\/\/tangopardo.com.ar\/2cf7\/wp-json\/wp\/v2\/posts\/726\/revisions\/730"}],"wp:attachment":[{"href":"https:\/\/tangopardo.com.ar\/2cf7\/wp-json\/wp\/v2\/media?parent=726"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tangopardo.com.ar\/2cf7\/wp-json\/wp\/v2\/categories?post=726"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tangopardo.com.ar\/2cf7\/wp-json\/wp\/v2\/tags?post=726"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}