2015-04-25 1 views
0

В настоящее время я создаю проект на python, который требует манипуляции с xml. Чтобы манипулировать файлом xml, я буду использовать Elementtree. Никогда раньше не работал с этим модулем. Я использовал php, но совершенно другой.Python Elementtree удалить/изменить узел

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

<myvideos> 
    <video> 
     <title>video1</title> 
     <plot>description bla bla bla</plot> 
     <duration>50</duration> 
    </video> 
    <video> 
     <title>name2</title> 
     <plot>another description bla bla bla</plot> 
     <duration>37</duration> 
    </video> 
    <video> 
     <title>another name etc</title> 
     <plot>description etc...</plot> 
     <duration>99</duration> 
    </video> 
</myvideos> 

То, что я хочу сделать, это поиск по названию видео (для Exemple «имя2»), а затем удалить или отредактировать эту запись видео. Exemples:

1) Поиск по видео с названием "имя2" и удалить запись видео:

<myvideos> 
    <video> 
     <title>video1</title> 
     <plot>description bla bla bla</plot> 
     <duration>50</duration> 
    </video> 
    <video> 
     <title>another name etc</title> 
     <plot>description etc...</plot> 
     <duration>99</duration> 
    </video> 
</myvideos> 

2) Поиск видео с названием "имя2" и редактировать эту запись:

<myvideos> 
    <video> 
     <title>video1</title> 
     <plot>description bla bla bla</plot> 
     <duration>50</duration> 
    </video> 
    <video> 
     <title>name2renamed</title> 
     <plot>edited</plot> 
     <duration>9999</duration> 
    </video> 
    <video> 
     <title>another name etc</title> 
     <plot>description etc...</plot> 
     <duration>99</duration> 
    </video> 
</myvideos> 
+0

Добро пожаловать на переполнение стека! Этот сайт является сайтом вопросов и ответов. Читатели, такие как вы сами, задаете вопросы, и другие читатели пытаются ответить на них. Я замечаю, что на ваш пост отсутствует вопрос. У вас есть конкретный вопрос? (Также вы можете просмотреть [справочный центр] (https://stackoverflow.com/help).) –

+0

Извините, я новичок. Я хотел бы спросить, возможно ли это сделать с помощью ElementTree. – Duoramy

+0

Да, это возможно. Я бы начал с чтения учебника ElementTree, в частности раздела под названием «Изменение файла XML». https://docs.python.org/2/library/xml.etree.elementtree.html#modification-an-xml-file –

ответ

1

Да, это можно сделать с помощью ElementTree. Функция .remove() может удалять XML-элементы из дерева XML. Вот пример того, как удалить все видео с именем name2 из файла XML:

import xml.etree.ElementTree as ET 
tree = ET.parse('in.xml') 
root = tree.getroot() 

items_to_delete = root.findall("./video[title='name2']") 
for item in items_to_delete: 
    root.remove(item) 

tree.write('out.xml') 

Ссылка:

+0

Спасибо. Очень полезно. – Duoramy

 Смежные вопросы

  • Нет связанных вопросов^_^