Я хотел бы прочитать, изменить и сохранить (переопределить) мой svg
файл с BeautifulSoup
в Python.
Содержимое bs-test.svg
:
<g data-default-color="#FFFFFF" data-element-id="X123456">
<rect class="selection-box" fill="none" height="91" stroke="none" width="140" x="-30" y="-10"/>
<circle cx="40" cy="25" data-colored="true" fill="red" pointer-events="visible" r="25" stroke="black" stroke-width="3"/>
<text fill="black" font-family="Verdana" font-size="16" text-anchor="middle" x="40" y="55">
<tspan dy="16" x="40">Label Text</tspan>
</text>
</g>
Содержимое фактически является подмножеством большего svg, где я нахожу g
элементов на основе предоставленных пользователем значений data-element-id
. Я хотел бы изменить атрибут fill
элемента circle
на "синий".
что у меня есть:
from bs4 import BeautifulSoup as bs
with open("bs-test.svg", "r") as f:
contents = f.read()
soup = bs(contents, "xml")
# grab g tags with the required data-element-id
elem_ls = soup.find_all(attrs={"data-element-id" : "X123456"})
x = elem_ls[0]
x
Вывод
<g data-default-color="#FFFFFF" data-element-id="X123456">
<rect class="selection-box" fill="none" height="91" stroke="none" width="140" x="-30" y="-10"/>
<circle cx="40" cy="25" data-colored="true" fill="red" pointer-events="visible" r="25" stroke="black" stroke-width="3"/>
<text fill="black" font-family="Verdana" font-size="16" text-anchor="middle" x="40" y="55">
<tspan dy="16" x="40">Label Text</tspan>
</text>
</g>
Я уверен, что это всего лишь вопрос синтаксиса, который я не могу найти ответьте на; как я могу go получить fill
атрибут circle
, заменить его значение на "синий" и записать?