У меня есть xml-файл, содержащий структуру каталогов для файлов, которые я хочу поместить в файл tar.gz (сплющенный).Как разобрать xml-файл со структурой каталогов
Как следует анализировать xml для извлечения пути для каждого файла?
Сейчас я использую LXML и найти пути, как это:
paths = []
for case in root.iter('case'):
for language in case.iter('language'):
for result in language.iter('result'):
for file in result.iter('file'):
paths.append('/'.join([node.get('id') for node in [case, language, result, file]]))
Но это чувствует себя немного слишком жёстко, и это не работает хорошо, если изменение структуры.
Я могу найти каждый файл-узел с помощью root.iter ('file'), но как я могу получить все родители/каталоги для каждого узла/файла? Или я должен делать это (полностью?) По-другому?
XML-выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<files batch="regular">
<case id="case_10_some_description">
<language id="english">
<result id="images">
<file id="screenshot_1.png"/>
<file id="screenshot_2.png"/>
<file id="screenshot_3.png"/>
<file id="screenshot_4.png"/>
<file id="screenshot_5.png"/>
<file id="screenshot_6.png"/>
</result>
</language>
</case>
<case id="case_12_some_description">
<language id="english">
<result id="images">
<file id="screenshot_1.png"/>
<file id="screenshot_2.png"/>
<file id="screenshot_3.png"/>
</result>
</language>
</case>
</files>
И это файлы:
regular/case_10_some_description/english/images/screenshot_1.png
regular/case_10_some_description/english/images/screenshot_2.png
regular/case_10_some_description/english/images/screenshot_3.png
regular/case_10_some_description/english/images/screenshot_4.png
regular/case_10_some_description/english/images/screenshot_5.png
regular/case_10_some_description/english/images/screenshot_6.png
regular/case_12_some_description/english/images/screenshot_1.png
regular/case_12_some_description/english/images/screenshot_2.png
regular/case_12_some_description/english/images/screenshot_3.png
Я написал этот пакет питона для управления эволюционирует шаблоны структуры каталогов ... https://github.com/robmoggach/python-dirtt – mogga