XML File से Specific Nodes Extract करना
XML Library का उपयोग करके आप XML File से कोई भी Node प्राप्त कर सकते हैं। लेकिन दिए गए Node को Extract करने के लिए, आपको XPath का उपयोग करना आना चाहिए। आप XPath के बारे में यहाँ और जान सकते हैं: W3Schools XPath Tutorial।
उदाहरण
मान लीजिए आपके पास निम्न Structure वाली XML File है:
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
और आप lang Attribute en वाले सभी title Nodes Extract करना चाहते हैं, तो Code होगा:
from xml.etree.ElementTree import ElementTree
tree = ElementTree()
root = tree.parse("my_file.xml")
for node in root.findall("//title[@lang='en']"):
print(node.text)
Output:
Everyday Italian Harry Potter
उपयोगी XPath Expressions:
//tag- Document में कहीं भी सभीtagElements/tag- Root के Direct ChildrentagElementstag[@attr='value']- Specific Attribute वाले Elements//tag/text()- Elements का Text Content
आधुनिक Approach: lxml Library (अधिक Powerful)
from lxml import etree
tree = etree.parse("my_file.xml")
titles = tree.xpath("//title[@lang='en']/text()")
print(titles) # ['Everyday Italian', 'Harry Potter']