কম্পিউটার টিউটোরিয়াল

পাইথনে XML পার্সিং: ElementTree API ব্যবহার করে XML পড়া, লিখা এবং মডিফাই করা

পাইথনের XML পার্সার XML ফাইল থেকে তথ্য বের করার সবচেয়ে সহজ পদ্ধতি প্রদান করে। এই টিউটোরিয়ালে দেখব কিভাবে ElementTree XML API ব্যবহার করে XML ফাইল পার্স, মডিফাই এবং তৈরি করা যায়।

উদাহরণ ১: XML ফাইল তৈরি করা

প্রথমে একটি রুট এলিমেন্ট এবং সাব-এলিমেন্টসহ একটি নতুন XML ফাইল তৈরি করব।

import xml.etree.ElementTree as xml

def createXML(filename):
    # রুট এলিমেন্ট দিয়ে শুরু
    root = xml.Element("users")
    children1 = xml.Element("user")
    root.append(children1)
    tree = xml.ElementTree(root)
    with open(filename, "wb") as fh:
        tree.write(fh)

if __name__ == "__main__":
    createXML("testXML.xml")

প্রোগ্রাম রান করলে কারেন্ট ডিরেক্টরিতে testXML.xml নামে একটি ফাইল তৈরি হবে যার কন্টেন্ট:

<users><user /></users>

নোট: ফাইল লিখার সময় 'wb' মোড (বাইনারি মোড) ব্যবহার করা হয়েছে।

XML এলিমেন্টে ভ্যালু যোগ করা

import xml.etree.ElementTree as xml

def createXML(filename):
    root = xml.Element("users")
    children1 = xml.Element("user")
    root.append(children1)
    
    userId1 = xml.SubElement(children1, "Id")
    userId1.text = "hello"
    userName1 = xml.SubElement(children1, "Name")
    userName1.text = "Rajesh"
    
    tree = xml.ElementTree(root)
    with open(filename, "wb") as fh:
        tree.write(fh)

if __name__ == "__main__":
    createXML("testXML.xml")

আউটপুট:

<users>
    <user>
        <Id>hello</Id>
        <Name>Rajesh</Name>
    </user>
</users>

XML ডেটা এডিট করা

এক্সিস্টিং XML ফাইল থেকে ডেটা পড়ে সেটি আপডেট করা।

ইনপুট ফাইল: newdata.xml

<users>
    <user>
        <id>1a</id>
        <name>Rajesh</name>
        <salary>NA</salary>
    </user>
    <user>
        <id>2b</id>
        <name>TutorialsPoint</name>
        <salary>NA</salary>
    </user>
    <user>
        <id>3c</id>
        <name>Others</name>
        <salary>NA</salary>
    </user>
</users>

স্যালারি আপডেট করার প্রোগ্রাম

import xml.etree.ElementTree as ET

def updateET(filename):
    tree = ET.ElementTree(file=filename)
    root = tree.getroot()
    
    for salary in root.iter('salary'):
        salary.text = '500000'
    
    tree = ET.ElementTree(root)
    with open("newdata.xml", "wb") as fh:
        tree.write(fh)

if __name__ == "__main__":
    updateET("newdata.xml")

আউটপুট: স্যালারি 'NA' থেকে '500000' এ পরিবর্তন হয়েছে।

XML পার্সিং প্রোগ্রাম

XML ফাইল থেকে ডেটা পড়ে প্রিন্ট করা।

import xml.etree.cElementTree as ET

def parseXML(file_name):
    tree = ET.ElementTree(file=file_name)
    print(tree.getroot())
    root = tree.getroot()
    print("tag=%s, attrib=%s" % (root.tag, root.attrib))
    
    print("-" * 25)
    print("Iterating using getchildren()")
    print("-" * 25)
    
    users = root.getchildren()
    for user in users:
        user_children = user.getchildren()
        for user_child in user_children:
            print("%s=%s" % (user_child.tag, user_child.text))

if __name__ == "__main__":
    parseXML("newdata.xml")

আউটপুট

<Element 'users' at 0x0551A5A0>
tag = users, attrib = {}
-------------------------
Iterating using getchildren()
-------------------------
id = 1a
name = Rajesh
salary = 500000
id = 2b
name = TutorialsPoint
salary = 500000
id = 3c
name = Others
salary = 500000
  1. পাইথনে issuperset() ফাংশন

  2. পাইথনে XML জেনারেট করা

  3. পাইথন ডিকশনারি থেকে XML জেনারেট করা

  4. পাইথন ডিকশনারিকে XML-এ সিরিয়ালাইজ কীভাবে করবেন?