我在使用 python 腳本提取版本號時遇到問題。它none在運行腳本時回傳。有人可以幫我嗎?
Python腳本:
import xml.etree.ElementTree as ET
tree = ET.parse('pom.xml')
root = tree.getroot()
releaseVersion = root.find("version")
print(releaseVersion)
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<artifactId>watcher</artifactId>
<version>0.0.1-SNAPSHOT</version>
<groupId>com.test</groupId>
<name>file</name>
<packaging>jar</packaging>
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<relativePath/>
<version>2.6.1</version>
</parent>
</project>
uj5u.com熱心網友回復:
您沒有考慮到您的所有元素都位于元素中定義的默認命名空間xmlns="http://maven.apache.org/POM/4.0.0"中<project>。
所以你必須用這個命名空間創建你的查詢。
import xml.etree.ElementTree as ET
tree = ET.parse('pom.xml')
root = tree.getroot()
NS = { 'maven' : 'http://maven.apache.org/POM/4.0.0' }
releaseVersion = root.find("maven:version",NS)
print(releaseVersion.text)
這里定義了在下面的 XPath 運算式中使用NS = { ... }的命名空間(下面用它的前綴來表示)。maven
uj5u.com熱心網友回復:
您在專案標簽中pom.xml有一個命名空間。xmlns="http://maven.apache.org/POM/4.0.0"
如果您必須使用全名搜索,則需要遵循{namespace}tag
>> root.find("{http://maven.apache.org/POM/4.0.0}version")
<Element '{http://maven.apache.org/POM/4.0.0}version' at 0x0000014635EC0A40>
但如果你不打擾你可以搜索{*}tag
>> root.find("{*}version")
<Element '{http://maven.apache.org/POM/4.0.0}version' at 0x0000014635EC0A40>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/446959.html
