使用此 python 2.7.3(或 2.7.0)代码,我想更改属性“android:versionCode='2'”的值,该属性具有命名空间前缀“android”:
#!/usr/bin/python
from xml.etree.ElementTree import ElementTree, dump
import sys, os
# Problem here:
ElementTree.register_namespace("android", "http://schemas.android.com/apk/res/android")
tree = ElementTree()
tree.parse("AndroidManifest.xml")
root = tree.getroot()
root.attrib["{http://schemas.android.com/apk/res/android}versionCode"] = "3"
dump(tree)
当不使用注释为“Problem here”的代码行时,ElementTree 会将http://schemas.android.com/apk/res/android的命名空间别名自动命名为“ns0”(导致“ns0:versionCode= '3'”。
因此,我使用 ElementTree.register_namespace 将命名空间 url 映射到别名“android”,这在此处记录。
我尝试这样做时得到的错误是:
AttributeError: type object 'ElementTree' has no attribute 'register_namespace'
有人知道为什么这不起作用吗?这个方法应该在 python 2.7 中可用。