एलिमेंटट्री के "ढूंढें" और "फाइंडल" तरीकों में एक्सएमएल नेमस्पेस को अनदेखा करना
एक्सएमएल दस्तावेज़ों में तत्वों को पार्स करने और ढूंढने के लिए एलिमेंटट्री मॉड्यूल का उपयोग करते समय , नामस्थान जटिलता का परिचय दे सकते हैं। यहां बताया गया है कि पायथन में "ढूंढें" और "खोजें" तरीकों का उपयोग करते समय नामस्थानों को कैसे अनदेखा किया जाए।
समस्या तब उत्पन्न होती है जब 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
नामस्थानों को अनदेखा करने के लिए, समाधान है "ढूंढें" या "खोजें" विधियों का उपयोग करने से पहले पार्स किए गए XML दस्तावेज़ में टैग को संशोधित करने के लिए। इसे ElementTree की iterparse() विधि का उपयोग करके प्राप्त किया जा सकता है:
import io
from xml.etree import ElementTree as ET
# Parse the XML document
it = ET.iterparse(StringIO(xml))
# Iterate over each element and strip the namespace if present
for _, el in it:
_, _, el.tag = el.tag.rpartition("}") # strip ns
# Get the modified root element
root = it.root
# Now, you can search for elements without namespaces
el3 = root.findall("DEAL_LEVEL/PAID_OFF") # Return matching elements
यह समाधान पार्स किए गए दस्तावेज़ में टैग को संशोधित करता है, जिससे प्रत्येक टैग के लिए नेमस्पेस उपसर्ग को मैन्युअल रूप से निर्दिष्ट करने की आवश्यकता के बिना तत्वों का पता लगाना आसान हो जाता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3