मैं ElementTree मॉड्यूल में स्रोत xml फ़ाइल के कुछ तत्वों का पता लगाने के लिए "findall" की विधि का उपयोग करना चाहता हूं।
हालाँकि, स्रोत xml फ़ाइल (test.xml) में नेमस्पेस है। मैं नमूने के रूप में xml फ़ाइल का हिस्सा छोटा करता हूं:
<?xml version="1.0" encoding="iso-8859-1"?>
<XML_HEADER xmlns="http://www.test.com">
<TYPE>Updates</TYPE>
<DATE>9/26/2012 10:30:34 AM</DATE>
<COPYRIGHT_NOTICE>All Rights Reserved.</COPYRIGHT_NOTICE>
<LICENSE>newlicense.htm</LICENSE>
<DEAL_LEVEL>
<PAID_OFF>N</PAID_OFF>
</DEAL_LEVEL>
</XML_HEADER>
नमूना पायथन कोड नीचे है:
from xml.etree import ElementTree as ET
tree = ET.parse(r"test.xml")
el1 = tree.findall("DEAL_LEVEL/PAID_OFF") # Return None
el2 = tree.findall("{http://www.test.com}DEAL_LEVEL/{http://www.test.com}PAID_OFF") # Return <Element '{http://www.test.com}DEAL_LEVEL/PAID_OFF' at 0xb78b90>
यद्यपि यह काम कर सकता है, क्योंकि एक नामस्थान "{http://www.test.com}" है, प्रत्येक टैग के सामने नामस्थान जोड़ने के लिए बहुत असुविधाजनक है।
"खोज", "खोज" और इसी तरह की विधि का उपयोग करते समय मैं नाम स्थान की उपेक्षा कैसे कर सकता हूं?
tree.findall("{0}DEAL_LEVEL/{0}PAID_OFF".format('{http://www.test.com}'))
tree.findall("xmlns:DEAL_LEVEL/xmlns:PAID_OFF", namespaces={'xmlns': 'http://www.test.com'})
सुविधाजनक पर्याप्त?