Python XML फ़ाइल – कैसे पढ़ें, लिखें और पार्स करें

⚡ स्मार्ट सारांश

Python XML प्रोसेसिंग आपको बिल्ट-इन minidom और ElementTree मॉड्यूल का उपयोग करके XML दस्तावेज़ों को पढ़ने, लिखने और पार्स करने की सुविधा देता है। minidom क्लास एक फ़ाइल को DOM के रूप में मेमोरी में लोड करता है, जबकि ElementTree एक तेज़ और अधिक कुशल प्रक्रिया प्रदान करता है। Pythonआईसी ट्री एपीआई।

  • 🔘 XML क्या है: एक्सटेंसिबल मार्कअप लैंग्वेज छोटे, संरचित डेटा को संग्रहीत और स्थानांतरित करती है।
  • मिनिडोम पार्सिंग: parse() फ़ंक्शन एक XML फ़ाइल को DOM के रूप में मेमोरी में लोड करता है।
  • पठन टैग: getElementsByTagName() मिलान करने वाले तत्वों को लौटाता है; getAttribute() उनके मानों को पढ़ता है।
  • 🧪 लेखन नोड्स: createElement() और appendChild() किसी दस्तावेज़ में एक नया टैग जोड़ते हैं।
  • एलिमेंटट्री एपीआई: ET.parse() एक ट्री बनाता है; getroot() रूट एलिमेंट लौटाता है।
  • 🤖 एआई के लिए तैयार: पार्स किए गए XML फीड कॉन्फ़िगरेशन और API डेटा को मशीन लर्निंग पाइपलाइन में भेजते हैं।

Python एक्सएमएल फ़ाइल

नीचे दिए गए अनुभाग XML फ़ाइलों को पार्स करने, लिखने और पढ़ने के बारे में जानकारी देते हैं। Python.

एक्सएमएल क्या है?

XML का मतलब है एक्सटेंसिबल मार्कअप लैंग्वेज। इसे छोटे से मध्यम मात्रा में डेटा को स्टोर और ट्रांसपोर्ट करने के लिए डिज़ाइन किया गया था और इसका व्यापक रूप से संरचित जानकारी साझा करने के लिए उपयोग किया जाता है।

Python यह आपको XML दस्तावेज़ों को पार्स और संशोधित करने में सक्षम बनाता है। किसी XML दस्तावेज़ को पार्स करने के लिए, आपको संपूर्ण XML दस्तावेज़ को मेमोरी में रखना होगा। इस ट्यूटोरियल में, हम देखेंगे कि हम XML minidom क्लास का उपयोग कैसे कर सकते हैं। Python XML फ़ाइलों को लोड और पार्स करने के लिए.

मिनीडोम का उपयोग करके XML को पार्स कैसे करें

हमने एक नमूना XML फ़ाइल बनाई है जिसे हम पार्स करने जा रहे हैं।

चरण 1) नमूना XML फ़ाइल बनाएँ

फ़ाइल के अंदर, हम पहला नाम, अंतिम नाम, घर और विशेषज्ञता का क्षेत्र (SQL, Python(परीक्षण और व्यवसाय)।

मिनीडोम का उपयोग करके XML को पार्स कैसे करें

चरण 2) XML फ़ाइल को लोड और पार्स करने के लिए पार्स फ़ंक्शन का उपयोग करें

दस्तावेज़ को पार्स करने के बाद, हम दस्तावेज़ के रूट का "नोड नाम" और "फर्स्टचाइल्ड टैगनाम" प्रिंट करेंगे। टैगनाम और नोडनाम XML फ़ाइल की मानक प्रॉपर्टीज़ हैं।

मिनीडोम का उपयोग करके XML पार्स करें

  • xml.dom.minidom मॉड्यूल को आयात करें और उस फ़ाइल को घोषित करें जिसे पार्स किया जाना है (myxml.xml)।
  • इस फ़ाइल में कर्मचारी के बारे में कुछ बुनियादी जानकारी होती है जैसे पहला नाम, अंतिम नाम, घर, विशेषज्ञता आदि।
  • हम XML फ़ाइल को लोड करने और पार्स करने के लिए XML मिनीडोम पर पार्स फ़ंक्शन का उपयोग करते हैं
  • हमारे पास एक वेरिएबल doc है, और doc को parse फ़ंक्शन का परिणाम मिलता है।
  • हम फ़ाइल से नोडनाम और चाइल्ड टैगनाम प्रिंट करना चाहते हैं, इसलिए हम इसे प्रिंट फ़ंक्शन में घोषित करते हैं।
  • कोड चलाएँ- यह XML फ़ाइल से नोडनाम (#document) और XML फ़ाइल से प्रथम चाइल्ड टैगनाम (कर्मचारी) प्रिंट करता है

नोटनोडनाम और चाइल्ड टैगनाम XML DOM के मानक नाम या गुण हैं।

चरण 3) XML दस्तावेज़ से XML टैग की सूची को कॉल करें और उसे प्रिंट करें।

इसके बाद, हम XML दस्तावेज़ से XML टैग की सूची भी निकाल सकते हैं और उसे प्रिंट कर सकते हैं। यहाँ हमने SQL जैसे कौशलों का सेट प्रिंट किया है। Python, परीक्षण और व्यापार.

मिनीडोम का उपयोग करके XML पार्स करें

  • विशेषज्ञता नामक चर घोषित करें, जिससे हम निष्कर्ष निकालेंगे।tracकर्मचारी के पास मौजूद सभी विशेषज्ञता के नाम।
  • “getElementsByTagName” नामक डोम मानक फ़ंक्शन का उपयोग करें
  • इससे कौशल नाम के सभी तत्व प्राप्त हो जाएंगे
  • प्रत्येक कौशल टैग पर एक लूप घोषित करें
  • कोड चलाएँ - यह चार कौशलों की सूची देगा।

XML नोड कैसे लिखें

हम “createElement” फ़ंक्शन का उपयोग करके एक नई विशेषता बना सकते हैं और फिर इस नई विशेषता या टैग को मौजूदा XML टैग में जोड़ सकते हैं। हमने अपनी XML फ़ाइल में एक नया टैग “BigData” जोड़ा है।

  1. आपको मौजूदा XML टैग में नया एट्रिब्यूट (BigData) जोड़ने के लिए कोड लिखना होगा।
  2. फिर, आपको मौजूदा XML टैग में नया एट्रिब्यूट जोड़कर XML टैग को प्रिंट करना होगा।

XML नोड लिखें

  • किसी नए XML टैग को जोड़ने और उसे दस्तावेज़ में शामिल करने के लिए, हम "doc.createElement" कोड का उपयोग करते हैं।
  • यह कोड हमारे नए एट्रीब्यूट "बिग डेटा" के लिए एक नया स्किल टैग बनाएगा।
  • इस स्किल टैग को डॉक्यूमेंट के पहले चाइल्ड (कर्मचारी) में जोड़ें।
  • कोड चलाएँ - "बिग डेटा" नाम का नया टैग विशेषज्ञता की अन्य सूची के साथ दिखाई देगा।

XML पार्सर उदाहरण

Python 2 उदाहरण

import xml.dom.minidom

def main():
# use the parse() function to load and parse an XML file
   doc = xml.dom.minidom.parse("Myxml.xml");
  
# print out the document node and the name of the first child tag
   print doc.nodeName
   print doc.firstChild.tagName
  
# get a list of XML tags from the document and print each one
   expertise = doc.getElementsByTagName("expertise")
   print "%d expertise:" % expertise.length
   for skill in expertise:
     print skill.getAttribute("name")
    
#Write a new XML tag and add it into the document
   newexpertise = doc.createElement("expertise")
   newexpertise.setAttribute("name", "BigData")
   doc.firstChild.appendChild(newexpertise)
   print " "

   expertise = doc.getElementsByTagName("expertise")
   print "%d expertise:" % expertise.length
   for skill in expertise:
     print skill.getAttribute("name")
    
if name == "__main__":
  main();

Python 3 उदाहरण

import xml.dom.minidom

def main():
    # use the parse() function to load and parse an XML file
    doc = xml.dom.minidom.parse("Myxml.xml");

    # print out the document node and the name of the first child tag
    print (doc.nodeName)
    print (doc.firstChild.tagName)
    # get a list of XML tags from the document and print each one
    expertise = doc.getElementsByTagName("expertise")
    print ("%d expertise:" % expertise.length)
    for skill in expertise:
        print (skill.getAttribute("name"))

    # Write a new XML tag and add it into the document
    newexpertise = doc.createElement("expertise")
    newexpertise.setAttribute("name", "BigData")
    doc.firstChild.appendChild(newexpertise)
    print (" ")

    expertise = doc.getElementsByTagName("expertise")
    print ("%d expertise:" % expertise.length)
    for skill in expertise:
        print (skill.getAttribute("name"))

if __name__ == "__main__":
    main();

एलिमेंटट्री का उपयोग करके XML को पार्स कैसे करें

ElementTree XML को प्रोसेस करने के लिए एक API है। ElementTree XML फ़ाइलों को प्रोसेस करने का एक आसान तरीका है।

हम नमूना डेटा के रूप में निम्नलिखित XML दस्तावेज़ का उपयोग कर रहे हैं:

<data>
   <items>
      <item name="expertise1">SQL</item>
      <item name="expertise2">Python</item>
   </items>
</data>

ElementTree का उपयोग करके XML पढ़ना:

हमें सबसे पहले xml.etree.ElementTree मॉड्यूल को इम्पोर्ट करना होगा।

import xml.etree.ElementTree as ET

अब आइए मूल तत्व को प्राप्त करें:

root = tree.getroot()

उपरोक्त XML डेटा को पढ़ने के लिए संपूर्ण कोड निम्नलिखित है:

import xml.etree.ElementTree as ET
tree = ET.parse('items.xml')
root = tree.getroot()

# all items data
print('Expertise Data:')

for elem in root:
   for subelem in elem:
      print(subelem.text)

आउटपुट:

Expertise Data:
SQL
Python

अक्सर पूछे जाने वाले प्रश्न

DOM नेविगेशन की आवश्यकता वाली छोटी फ़ाइलों के लिए minidom का उपयोग करें। अधिकांश कार्यों के लिए ElementTree चुनें — यह तेज़, हल्का और अनुशंसित है। Pythonआईसी डिफ़ॉल्ट।

रूट को ElementTree में लपेटें और tree.write(“out.xml”, encoding=”utf-8″, xml_declaration=True) को कॉल करें। इंडेंटेशन के लिए, ET.indent() का उपयोग करें। Python 3.9+, या lxml का pretty_print.

lxml एक थर्ड-पार्टी लाइब्रेरी है जो ElementTree API का उपयोग करती है, लेकिन तेज़ C कोड द्वारा समर्थित है। यह XPath, XSLT और वैलिडेशन को जोड़ती है। इसे pip install lxml कमांड से इंस्टॉल करें।

मानक पार्सर XXE और बिलियन-लाफ्स हमलों के प्रति संवेदनशील होते हैं। defusedxml इंस्टॉल करें और defusedxml.ElementTree को इम्पोर्ट करें — यह एक ड्रॉप-इन रिप्लेसमेंट है जो खतरनाक बाहरी एंटिटीज़ को निष्क्रिय कर देता है।

जी हां। आप minidom.parseString(text) या ElementTree के ET.fromstring(text) का उपयोग कर सकते हैं, जो सीधे रूट लौटाता है। दोनों XML को एक वेरिएबल से पार्स करते हैं, इसलिए प्रतिक्रियाओं को पहले सहेजने की आवश्यकता नहीं है।

ElementTree का उपयोग करके ट्री को एक्सप्लोर करें और प्रत्येक एलिमेंट के टैग, एट्रिब्यूट और टेक्स्ट से एक डिक्शनरी बनाएं। xmltodict लाइब्रेरी xmltodict.parse() का उपयोग करके रूपांतरण को स्वचालित करती है।

XML कॉन्फ़िगरेशन, एनोटेशन और API प्रतिक्रियाओं को संग्रहीत करता है जो मॉडल को फ़ीड करते हैं। पास्कल VOC छवि लेबल XML के रूप में आते हैं; ElementTree extracप्रशिक्षण के लिए उनके बाउंडिंग बॉक्स।

जी हां। GitHub Copilot मिनीडोम और एलिमेंटट्री पैटर्न को parse() और findall() लूप की तरह ऑटो-कंप्लीट करता है। फिर भी टैग नामों और एन्कोडिंग की जांच करें, और अविश्वसनीय इनपुट के लिए defusedxml जोड़ें।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: