我正在使用Python的AndroidManifest.xml
解析ElementTree
。我需要将android
命名空间注册为http://schemas.android.com/apk/res/android
,否则ElementTree会将其替换为ns0
之类的内容。这是不直观的,但现在它有效。
当访问节点的属性时,我希望能够简单地指定例如。 elem.attrib["android:versionCode"]
。但它不起作用,因为ElementTree希望我像这样使用它:
ET.register_namespace("android", "http://schemas.android.com/apk/res/android")
tree = ET.ElementTree()
tree.parse("AndroidManifest.xml")
root = tree.getroot()
root.attrib["{http://schemas.android.com/apk/res/android}versionCode"] = "3"
即使在文件中也是android:versionCode
。
由于这是违反直觉的,有没有办法使用root.attrib["android:versionCode"]
代替?
答案 0 :(得分:0)
不,没有其他方法可以在ElementTree中指定“限定名称”。
来自http://effbot.org/zone/element-namespaces.htm
在元素树中,合格名称以Clark表示法中的通用名称存储,该通用名称将URI和本地部分组合成单个字符串,并以>“ {uri} local”给出。
“ {{http://www.w3.org/1999/xhtml} a”
其他参考