У меня есть файл SVG. Я пытаюсь избавиться от некоторых элементов, содержащих указанный c текст:
<g style="font-family:'ARIAL'; stroke:none; fill:rgb(127,0,0);" >
<g font-size="53.4132" >
<text id="cv_126" x="168" y="474.78" transform="rotate(330 168 474.78) translate(168 -474.78) scale(1 1) translate(-168 474.78) ">SomeSpecificText</text>
<text id="cv_127" x="336" y="474.78" transform="rotate(330 336 474.78) translate(336 -474.78) scale(1 1) translate(-336 474.78) ">SomeSpecificTextBis</text>
</g>
</g>
. Приведенный выше пример иллюстрирует то, что мне нужно сделать: мне нужно удалить весь блок (<g><g> ... </g></g>
), потому что он содержит SomeSpecificText
и SomeSpecificTextBis
. Я должен сделать это для любого "блока" или "элемента", который содержит либо тот, либо другой текст.
Я хочу добиться этого, используя Python и l xml, потому что, очевидно, это обеспечивает необходимый инструменты, но я не знаю, как его использовать. У меня есть этот код на данный момент:
tree = etree.parse(open("myFile.svg"))
, но тогда я не знаю, какой метод я буду использовать? Я видел, как кто-то говорил о xpath и пытался, например, tree.xpath('.//g[contains(text(), "SomeSpecific")])
, но он возвращает пустой список.
EDIT
Я пробовал следующее, чтобы попытаться поймать структура, которая содержит «someSpecificText» (требуется частичное совпадение), но она по-прежнему возвращает пустой список для parents
tree = etree.parse(open("svg/myFile_ezdxf.svg"))
targets = tree.xpath('//g[./g[contains(text(),"SomeText")]]', namespaces = {"svg" : "http://www.w3.org/2000/svg"})
for target in targets:
target.getparent().remove(target)
Также вот заголовок моего файла SVG:
<?xml version="1.0" encoding="utf-8" ?>
<!-- Generated by SomeCompanySoftware -->
<!-- www.somecompany.com -->
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN'
'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg contentScriptType="text/ecmascript" xmlns:xlink="http://www.w3.org/1999/xlink" zoomAndPan="magnify"
contentStyleType="text/css" preserveAspectRatio="xMidYMid meet"
width="840" height="593.48" viewBox="0 0 840 593.48"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:cvjs="http://www.somecompany.com/" stroke-linecap="round" stroke-linejoin="round" fill-rule="evenodd" >