Как удалить определенные теги - PullRequest
1 голос
/ 24 июня 2010

У меня есть следующий XML-файл:

<book>
 <bookname child="test">
  <text> Works </text>
  <text> Doesn't work </text>
 </bookname>
</book>

Это всего лишь один блок, существует более одного тега <bookname>.Мне нужно перебрать весь документ и удалить определенные теги <text>.Как мне это сделать?

Мой подход состоит в том, чтобы сначала создать ElementTree, а затем получить экземпляр Element, используя ElementTree.getroot().Тогда я использую Element.clear().Этот подход в порядке?Я хотел использовать Element.remove(), но не могу заставить его работать.Может ли кто-нибудь предоставить мне пример синтаксиса.

Спасибо за помощь!

1 Ответ

1 голос
/ 24 июня 2010

Просто позвоните parentNode.remove(childNode). Как то так:

>>> etree.tostring(tree)
'<book> <bookname child="test">  <text> Works </text>  <text> Doesnt work </text>    </bookname></book>'
>>> bookname=tree[0]
>>> text2=bookname[1]
>>> bookname.remove(text2)
>>> etree.tostring(tree)
'<book> <bookname child="test">  <text> Works </text>  </bookname></book>'
>>>

Здесь я беру узел bookname и прошу его удалить его второго потомка.

Для поиска узлов, которые вы хотите удалить, я бы использовал xpath

...