Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解析依赖项Pom文件_Python_Arrays_Dictionary_Parsing_Pom.xml - Fatal编程技术网

Python 解析依赖项Pom文件

Python 解析依赖项Pom文件,python,arrays,dictionary,parsing,pom.xml,Python,Arrays,Dictionary,Parsing,Pom.xml,我试图解析一个pom文件,但我遇到了一个无法解决的问题。我当前的代码成功地从pom文件读取、解析和输出。问题在于依赖项没有按相同顺序指定artifactId、groupId和version 我应该在for循环中设置什么条件,以便它忽略标记(例如类型),只检索artifactId、groupId和version 代码: 对于依赖中的dep: 信息列表=[] 计数器+=1 对于dep.getchildren()中的子项: infoList.append(child.tag.split('}')[1]

我试图解析一个pom文件,但我遇到了一个无法解决的问题。我当前的代码成功地从pom文件读取、解析和输出。问题在于依赖项没有按相同顺序指定artifactId、groupId和version

我应该在for循环中设置什么条件,以便它忽略标记(例如类型),只检索artifactId、groupId和version

代码:

对于依赖中的dep:
信息列表=[]
计数器+=1
对于dep.getchildren()中的子项:
infoList.append(child.tag.split('}')[1])
infoList.append(child.text)
#列出存储数据的位置
dependencyInfo[infoList[1]]。更新({infoList[2]:infoList[3],infoList[4]:infoList[5]})
Pom文件示例


slf4j api
org.slf4j
罐子
1.6.1
org.slf4j
log4j-over-slf4j
1.6.1
示例项目a
项目A
编译
1
真的
实际产量:

defaultdict(<class 'dict'>,{'slf4j-api': {'groupId': 'org.slf4j', 'type': 'jar'}, 'org.slf4j': {'artifactId': 'log4j-over-slf4j', 'version': '1.6.1'}, 'sample.ProjectA': {'artifactId': 'Project-A', 'scope': 'compile'}})
defaultdict(,{'slf4j-api':{'groupId':'org.slf4j','type':'jar'},'org.slf4j':{'artifactId':'log4j-over-slf4j','version':'1.6.1','sample.ProjectA':{'artifactId':'Project-A','scope':'compile})
预期产出:

defaultdict(<class 'dict'>,{'slf4j-api': {'groupId': 'org.slf4j', 'version': '1.6.1'}, 'org.slf4j': {'artifactId': 'log4j-over-slf4j', 'version': '1.6.1'}, 'sample.ProjectA': {'artifactId': 'Project-A', 'version': '1.0'}})
defaultdict(,{'slf4j-api':{'groupId':'org.slf4j','version':'1.6.1','org.slf4j':{'artifactId':'log4j-over-slf4j','version':'1.6.1','sample.ProjectA':{'artifactId':'Project-A','version':'1.0'})

如果您有任何帮助,我们将不胜感激

因为您的文件示例看起来像XML,我建议您使用一个,而不是自己制作一个

有一点学习曲线可以获得您想要的确切数据,但值得学习,因为它可以扩展到解析更高级和复杂的类型,并且不会有逻辑错误