Я хотел бы проанализировать xml-файл, вот мой xml-файл:
<group>
<name>Services</name>
<file>
<name>Path\File1.c</name>
</file>
<file>
<name>Path\File2.c</name>
<excluded>
<configuration>Configuration1</configuration>
<configuration>Configuration2</configuration>
</excluded>
</file>
<file>
<name>Path\File3.c</name>
<excluded>
<configuration>Configuration2</configuration>
<configuration>Configuration3</configuration>
</excluded>
</file>
<file>
<name>Path\File4.c</name>
</file>
</group>
Этот xml-файл описывает файл, используемый в проекте.Этот проект имеет несколько Конфигурация с именами от Конфигурация1 до Конфигурация4 .Для примера предположим, что у меня есть доступ к ним благодаря списку конфигурационных имен.В файле xml перечислены все файлы, используемые в проекте, каждый файл находится в каждой конфигурации , если только он не указан ниже имени файла, конфигурация находится в тегах исключенных
Чего я хотел бы добиться, так это функции, которая:
- Учитывая дерево xml, имя конфигурации вернет список всех файлов, используемых в этой конфигурации.
Я успешно получил все файлы, вот мой код:
from lxml import etree
def getSourceFile(sTree, szConfigName):
#retrieve every file used in the project
lSource = []
for data in sTree.xpath('/group'):
file = data.findall("file")
for x in file:
for element in x:
if(element.tag == "name"):
lSource.append(element.text)
print(lSource)
if __name__ == '__main__':
sTree = etree.parse("myXmlFile.xml")
lConfigName = ["Configuration1", "Configuration2", "Configuration3", "Configuration4"]
for iIdxConfig in range(0, len(lConfigName)):
getSourceFile(sTree, lConfigName[iIdxConfig])
print("\n\n")
Я не знаю, как я могу продолжить проверку каждого файла, если текущая конфигурация исключает этот файл.