আমি এলিমেন্ট্রি মডিউলটিতে উত্স এক্সএমএল ফাইলের কিছু উপাদান সনাক্ত করতে "Findall" পদ্ধতিটি ব্যবহার করতে চাই।
তবে উত্স এক্সএমএল ফাইলের (টেস্ট.এক্সএমএল) নাম স্থান রয়েছে। আমি নমুনা হিসাবে এক্সএমএল ফাইলের অংশ ছাঁটাই:
<?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'})
সুবিধাজনক কি যথেষ্ট?