Привет! Я начал изучать python и хочу использовать его, чтобы что-то сделать с XML-файлом.
Я искал информацию о лучшем курсе, которому нужно следовать, но, честно говоря, я немного растерялся.Существует так много способов манипулирования файлами XML, как ElementTree, lxml, minidom и т. Д. И т. Д.Может ли кто-нибудь указать мне правильное направление?Или укажите мне код, который я могу обернуть вокруг.Я начал экспериментировать с lxml, но больше не печатал все элементы.
Вот что я пытаюсь сделать:
- Чтение строки из файла csv,Загрузите в Label и FullPath.
- Просмотрите файл XML для ITEM с указанием FullPath
- Измените FLAG1 для этого элемента на TRUE
- Измените FLAG2 и FLAG3 для этого элемента наFALSE
- Измените Метку для этого ПУНКТА на Метку из файла CSV.
- Запишите new.xml
Ниже приведена моя структура xml.Две записи ниже повторяются, как 10000 раз в файле.
<ThisIsMyData>
<ITEM>
<Number>0</Number>
<Flag1>TRUE</Flag1>
<Flag2>FALSE</Flag2>
<Flag3>FALSE</Flag3>
<Label>RED</Label> <<-2- After finding 1 I need to change THIS(only this)
<Path>C:\\test\\</Path> <-1- I need to find this
<file>test.png</file>
</ITEM>
<ITEM>
<Number>1</Number>
<Flag1>TRUE</Flag1>
<Flag2>FALSE</Flag2>
<Flag3>FALSE</Flag3>
<Label>Blue</Label>
<Path>c:\\test\\test2\\</Path>
<file>blue.png</file>
</ITEM>
</ThisIsMyData>
Итак, у меня есть ROOT: затем много элементов:.У каждого из них есть 7 SubElements.
Вот так выглядит мой CSV-файл и мне нужен мой вывод: CSV-файл:
Label;FullPath
YELLOW;C:\\test\\test.png
YELLOW;c:\\test\\test2\\blue.png
<ThisIsMyData>
<ITEM>
<Number>0</Number>
<Flag1>FALSE</Flag1>
<Flag2>FALSE</Flag2>
<Flag3>TRUE</Flag3>
<Label>YELLOW</Label>
<Path>C:\\test\\</Path>
<file>test.png</file>
</ITEM>
<ITEM>
<Number>1</Number>
<Flag1>FALSE</Flag1>
<Flag2>FALSE</Flag2>
<Flag3>TRUE</Flag3>
<Label>YELLOW</Label>
<Path>c:\\test\\test2\\</Path>
<file>blue.png</file>
</ITEM>
</ThisIsMyData>
Вставить ссылку в случае, если макет испорченup:
http://pastebin.com/embed_js.php?i=QEx2ZGuY
Я пытаюсь ElementTree прямо сейчас, используя этот пример: http://pymotw.com/2/xml/etree/ElementTree/parse.html. Мне удалось найти в XML определенное имя элемента и распечатать содержимое,Но я все еще не вижу способа найти соответствующий элемент на том же уровне.
from xml.etree import ElementTree
with open('mydata.xml', 'rt') as f:
tree = ElementTree.parse(f)
# filelist = ElementTree.ElementTree.find()
for node in tree.findall('.//file'):
FileName = node.tag, node.text
print FileName
Вывод:
('file', 'test.png')
('file', 'blue.png')