Python POM解析器替换文本

时间:2018-01-30 12:08:18

标签: xml python-2.7 pom.xml

XML enter image description here

我需要在屏幕上标记更改版本。

我试试:

<img src='image.jpg' title='my great image' />

pom中的所有版本1.4.1都是替换版,文档中的所有行都以with open(PathPom,'r') as f: tree = ET.parse(f) root = tree.getroot() for elem in root.getiterator(): try: elem.text = elem.text.replace('1.4.1', '5.0.0') except AttributeError: pass tree.write(PathPom,xml_declaration=True, method='xml')

开头

你知道如何解决它吗?

<ns0

2 个答案:

答案 0 :(得分:0)

要防止ElementTree添加ns0前缀,您需要在解析XML之前将默认命名空间映射到空前缀。由于只有一个元素需要更新,因此您可以使用find()轻松获取该元素:

....
ET.register_namespace('', 'http://maven.apache.org/POM/4.0.0')
tree = ET.parse(f)
root = tree.getroot()

version = root.find('{http://maven.apache.org/POM/4.0.0}version')
version.text = '5.0.0'
....

答案 1 :(得分:0)

非常感谢,但我如何能够取代其他版本?

<version>1.4.1</version>
    <packaging>lba</packaging>
    <properties>
        <lb.middlewareVersion>1.7.0</lb.middlewareVersion>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>maven</groupId>
                <artifactId>lba-maven-plugin</artifactId>
                <version>1.4.1</version>
                <extensions>true</extensions>
            </plugin>