Удалить строки из файла XML в соответствии со специальными флагами - PullRequest
0 голосов
/ 27 ноября 2018

Мой файл содержит разные теги.

В соответствии с тегами, я хотел бы удалить строки в соответствии со значениями в тегах.

Например, cellColumn> 20, xPos> 2000 или xpos> 200 && xPos> 4000.

Есть ли рекомендуемый способ сделать это?Или пакет?

<OwnCell cellRow="20" cellColumn="103" xPos="24901" widthPx="49" value="22" />
<OwnCell cellRow="20" cellColumn="104" xPos="25137" widthPx="49" value="25" />
<OwnCell cellRow="21" cellColumn="105" xPos="25373" widthPx="49" value="31" />
<OwnCell cellRow="20" cellColumn="106" xPos="25609" widthPx="49" value="28" />
<OwnCell cellRow="24" cellColumn="107" xPos="25845" widthPx="49" value="19" />
<OwnCell cellRow="20" cellColumn="108" xPos="26081" widthPx="49" value="19" />

Спасибо!

1 Ответ

0 голосов
/ 27 ноября 2018

вы можете отфильтровать документ следующим образом:

import xml.etree.ElementTree as xee
data='''\
<root>
  <OwnCell cellRow="20" cellColumn="103" xPos="24901" widthPx="49" value="22" />
<OwnCell cellRow="20" cellColumn="104" xPos="25137" widthPx="49" value="25" />
<OwnCell cellRow="21" cellColumn="105" xPos="25373" widthPx="49" value="31" />
<OwnCell cellRow="20" cellColumn="106" xPos="25609" widthPx="49" value="28" />
<OwnCell cellRow="24" cellColumn="107" xPos="25845" widthPx="49" value="19" />
<OwnCell cellRow="20" cellColumn="108" xPos="26081" widthPx="49" value="19" />
</root>
'''
doc=xee.fromstring(data)

for tag in doc.findall('OwnCell'):
    if int(tag.attrib['cellRow'])<=20: #add your filter condition here
        doc.remove(tag)
print(xee.tostring(doc))

сначала найдите все элементы, которые вы хотите отфильтровать, затем добавьте условие для исключения элемента, соответствующего этому условию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...