Python 中的 XML 解析?
Python XML 解析器提供了一種讀取和提取 XML 檔案中有用資訊的最簡單方法之一。在本簡短教程中,我們將瞭解如何使用 python ElementTree XML API 解析 XML 檔案、修改和建立 XML 文件。
Python ElementTree API 是提取、解析和轉換 XML 資料最簡單的方法之一。
那麼讓我們開始使用 ElementTree 使用 python XML 解析器吧
示例1
建立 XML 檔案
首先,我們將建立一個包含一個元素和一個子元素的新 XML 檔案。
#Import required library import xml.etree.ElementTree as xml def createXML(filename): # Start with the root element 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")
執行上述程式後,將在我們當前的預設工作目錄中建立一個名為“textXML.xml”的新檔案。
其內容類似於
<users><user /></users>
請注意,寫入檔案時,我們使用了“wb”模式,即以二進位制模式寫入檔案。
向 XML 元素新增值
讓我們為上述程式中的 XML 元素賦一些值。
#Import required library import xml.etree.ElementTree as xml def createXML(filename): # Start with the root element 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 資料
讓我們從檔案中向我們現有的程式中新增一些資料。
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>
以上是我們當前的 xml 檔案,讓我們嘗試更新每個使用者的薪水。
#Import required library import xml.etree.ElementTree as ET def updateET(filename): # Start with the root element 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”。
示例:Python XML 解析器
現在讓我們編寫另一個程式,該程式將解析檔案中存在的 XML 資料並列印資料。
#Import required library import xml.etree.cElementTree as ET def parseXML(file_name): # Parse XML with ElementTree tree = ET.ElementTree(file=file_name) print(tree.getroot()) root = tree.getroot() print("tag=%s, attrib=%s" % (root.tag, root.attrib)) # get the information via the children! 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
廣告