python - 将 SVG 转换为使用内联样式
问题描述
如何将 SVG 转换为在 Python 中使用内联样式?例如,我想转换它:
<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 576 576">
<defs>
<style>.cls-1{fill:#d1b037;stroke:#1e1e1e;stroke-width:0.25px;}</style>
</defs>
<rect class="cls-1" width="576" height="576"/>
</svg>
至
<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 576 576">
<rect class="cls-1" width="576" height="576" fill='#d1b037' stroke='#1e1e1e' stroke-width='0.25px'/>
</svg>
这是一个简单的例子。我需要支持不同的元素,例如path
共享同一组属性的多个类。
Python 中有 SVG/XML 解析器,但没有用于解析样式标签。如果用另一种语言/工具更容易做到,我会同意的。
解决方案
没有自动的方法来做到这一点 - 你必须耦合一个 XML 解析器,这样你才能获取style
标签的内容,然后将其提供给 CSS 解析器 - 就像tinycss
(在评论中链接) -
然后由您决定检索 CSS 解析器返回的对象并将规则与 ramining SVG 标签匹配 - 并且,在匹配时,将规则复制到其style
标签(或者,根据需要 - 从样式中组装 XML 属性由解析器给出的规则)。
这是一些工作,但考虑到 CSS 解析器的文档应该或多或少直截了当。
推荐阅读
- arrays - 如何处理 YAML 中给出的数组项以与 Go 中的结构关联?
- sql - SQL 条件求和 Oracle 更新
- oracle - DBA_AUTOTASK_SCHEDULE 不对?
- python - Python - 从 URL 读取图像然后用于 face_recognition?
- wordpress - 在 wp_users 表上添加新字段
- c# - 如何在实体框架 6 中将数字映射为双精度值?
- arrays - 未从 LocalStorage 中删除正确的索引项
- postgresql - 在 postgresql 中查找数据库中损坏的表
- python - 在python中重复列表N次?
- cakephp - CakePHP 3.8 - Cookie 删除