このpython2.7.3(または2.7.0)コードを使用して、名前空間プレフィックス「android」を持つ属性「android:versionCode='2'」の値を変更したいと思います。
#!/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)
「Problemhere」とコメントされたコード行を使用しない場合、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'
なぜこれが機能しないのか誰かが知っていますか?このメソッドは、Python2.7で使用できるはずです。