我试图解析一个pom文件,但我遇到了一个无法解决的问题。我当前的代码成功地从pom文件读取、解析和输出。问题在于依赖项没有按相同顺序指定artifactId、groupId和version
我应该在for循环中设置什么条件,以便它忽略标记(例如type),只检索artifactId、groupId和version
代码:
for dep in depend:
infoList = []
counter += 1
for child in dep.getchildren():
infoList.append(child.tag.split('}')[1])
infoList.append(child.text)
#list where data is being stored
dependencyInfo[infoList[1]].update({infoList[2] : infoList[3],infoList[4] : infoList[5]})
Pom文件示例
<dependency>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
<type>jar</type>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>sample.ProjectA</groupId>
<artifactId>Project-A</artifactId>
<scope>compile</scope>
<version>1.0</version>
<optional>true</optional>
</dependency>
实际产量:
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(<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'}})
任何帮助都将不胜感激
因为您的文件示例看起来像XML,所以我建议使用XML parser而不是自己制作一个
获得您想要的确切数据需要一点学习曲线,但这是值得学习的,因为它可以扩展到解析更高级和更复杂的类型,并且不会出现逻辑错误
相关问题 更多 >
编程相关推荐