Как назначить динамическое значение в find в xpath python - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть XML-файл

<root>
<emps>
<employee title="abc">ABC</employee>
<employee title="gef">GEF</employee>
<!-- <employee title="abc">
ABC
</employee>
-->
</emps>
</root>

Я хочу удалить некоторые сведения о сотруднике из этого файла. Данные сотрудника, подлежащие удалению, упоминаются в другом файле delemp.txt abc gh

import xml.etree.ElementTree as ET
class CommentedTreeBuilder(ET.XMLTreeBuilder):
    def __init__(self, *args, **kwargs):
        super(CommentedTreeBuilder, self).__init__(*args, **kwargs)
        self._parser.CommentHandler = self.comment

    def comment(self, data):
        self._target.start(ET.Comment, {})
        self._target.data(data)
        self._target.end(ET.Comment)


parser=CommentedTreeBuilder()
tree = ET.parse('emps.xml', parser)

#tree = ET.parse('emps.xml')
root = tree.getroot()
for e in root.iter('employee'):
    print(e.attrib)

val = 'abc'
#mv1 = root.find("./employee[@title='abc']")
#root.remove(mv1)
#th='//employee[title()="'+val'"]'
#xpath='//employee[title()="'+val+'"]'
#mv2 = root.find(xpath)
#print mv2
#root.remove(mv2)
mmm = root.find("//employee[@title='{}']".format(val))
print mmm
root.remove(mmm)
#"//*[@text='{}']".format(email)
tree.write("emps.xml")

tree = ET.parse('emps.xml')
root = tree.getroot()

for movie in root.iter('employee'):
    print(e.attrib)

Я пытаюсь удалить узел xml. Если я даю статическое значение как name = 'abc' в xpath, оно работает, но если я пытаюсь дать динамическое значение, оно не работает. Пожалуйста, помогите мне

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