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

更新於:2019年7月30日

2K+ 次瀏覽

啟動您的 職業生涯

完成課程獲得認證

開始
廣告