2012-05-25 35 views
10

इस पायथन 2.7.3 (या 2.7.0) कोड के साथ मैं विशेषता "एंड्रॉइड: वर्जनकोड = '2'" के मान को बदलना चाहता हूं, जो किपायथन 2.7: ऑब्जेक्ट "एलिमेंटट्री" में कोई विशेषता नहीं है "register_namespace"

#!/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) 

"यहाँ समस्या" के साथ टिप्पणी की कोड की लाइन का उपयोग नहीं करते हैं, तो ElementTree है ऑटो नामकरण http://schemas.android.com/apk/res/android "ns0" ("ns0 में जिसके परिणामस्वरूप के लिए नाम स्थान उर्फ: versionCode नामस्थान उपसर्ग" Android "है = '3' "

इस प्रकार मैं नामस्थान यूआरएल को उपनाम नाम" एंड्रॉइड "में मैप करने के लिए ElementTree.register_namespace का उपयोग कर रहा हूं, जिसे here दस्तावेज किया गया है।

त्रुटि मैं जब मैं यह करने के लिए कोशिश है:

AttributeError: type object 'ElementTree' has no attribute 'register_namespace' 

किसी जानता कि क्यों यह काम नहीं कर रहा? यह विधि पायथन 2.7 में उपलब्ध होनी चाहिए।

उत्तर

23

register_namespace() is a function contained within the ElementTree module
यह ElementTree वर्ग में न है ...

एक तरफ: क्योंकि भ्रम है कि कभी कभी ऐसा करने की वजह से की यह आम तौर पर दोनों मॉड्यूल और वर्ग के लिए समान नाम का उपयोग करने के लिए सिफारिश नहीं है। लेकिन हम अब व्यापक रूप से इस्तेमाल मॉड्यूल का नाम बदलकर उत्पादन कोड तोड़ने वाले नहीं हैं? ,

#!/usr/bin/python 
import xml.etree.ElementTree as ET # import entire module; use alias for clarity 
import sys, os 

# note that this is the *module*'s `register_namespace()` function 
ET.register_namespace("android", "http://schemas.android.com/apk/res/android") 

tree = ET.ElementTree() # instantiate an object of *class* `ElementTree` 
tree.parse("AndroidManifest.xml") 
root = tree.getroot() 
root.attrib["{http://schemas.android.com/apk/res/android}versionCode"] = "3" 

ET.dump(tree) # we use the *module*'s `dump()` function 
+0

शानदार है कि यह क्या है:

आप बस अपने कोड बदलने की जरूरत है। धन्यवाद बेर्नी। – derFunk

+0

चीयर्स, दोस्त। आपको – bernie

+0

पर हैप्पी कोडिंग स्टैक ओवरफ़्लो पर 5 समान प्रश्न हैं और यह एकमात्र सही उत्तर है, धन्यवाद – seibelj

संबंधित मुद्दे