gpt4 book ai didi

python - 解析 XML 文件以根据子元素检索父元素

转载 作者:行者123 更新时间:2023-12-01 08:17:19 26 4
gpt4 key购买 nike

我想解析一个 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 文件描述项目中使用的文件。该项目有多个配置,名称分别为Configuration1 到Configuration4。对于这个例子,我们假设我可以通过配置名称列表访问这些内容。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")

如果当前配置不包括该文件,我不知道如何继续检查每个文件。

最佳答案

我不确定你真正想做什么,但也许这个片段可以帮助你

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:
myName = ""
confIsExcluded=False
for element in x:
if(element.tag == "name"):
myName = element.text
if(element.tag == "excluded"):
configurations = [config.text for config in element.findall("configuration")]
if(szConfigName in configurations):
confIsExcluded=True
if(not confIsExcluded):
lSource.append(myName)
print(lSource)

if __name__ == '__main__':
sTree = etree.parse("myXmlFile.xml")
lConfigName = ["Configuration1", "Configuration1", "Configuration2", "Configuration3"]

for iIdxConfig in range(0, len(lConfigName)):
getSourceFile(sTree, lConfigName[iIdxConfig])
print("\n\n")

关于python - 解析 XML 文件以根据子元素检索父元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54902885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com