XML(eXtensible Markup Language),即可擴展标記語言,可以任意定義需要的标簽,因為它擴展的靈活性,被廣泛應用于各類數據的傳輸和存儲。
Python對XML提供了良好的模塊支持,在各類模塊處理方式中,ElementTree模塊因為他的簡單易用性得到了廣泛應用。
二、關于XML實例說明
圖2-1
1、XML文件采用一種樹形表示,由一個根節點、子節點組成,每個節點都可以擁有“屬性(attrib)”、“内容(text)”、“标簽(tag)”三部分内容。
2、XML必須遵循的規範性:
· XML 文檔必須有一個根元素
· XML 标簽區分大小寫
· XML 元素嵌套必須正确
· XML 文檔必須有開始标簽、關閉标簽配對
· XML 屬性必須加引号
3、如下“2019-students.xml”文檔,作為後續python處理的基礎:
<class name="123class" grade="2019">
<student id="01">
<name>xiaoli</name>
<sex>male</sex>
<age>15</age>
<result>
<math>80</math>
<english>86</english>
<Chinese>90</Chinese>
</result>
</student>
<student id="02">
<name>xiaohuang</name>
<sex>male</sex>
<age>16</age>
<result>
<math>81</math>
<english>83</english>
<Chinese>76</Chinese>
</result>
</student>
<student id="03">
<name>xiaozhang</name>
<sex>male</sex>
<age>15</age>
<result>
<math>85</math>
<english>84</english>
<Chinese>80</Chinese>
<physics>90</physics>
</result>
</student>
</class>
關于節點的“屬性(attrib)”、“内容(text)”、“标簽(tag)”具體指什麼,可以通過python的輸出直觀的認識下。
三、python讀寫xml文檔1、新建myxml工程
2、新建python文件xml_test.py文件,實現編碼
#模塊導入
import xml.etree.ElementTree as ET
######################################
#子函數編寫
#讀操作
def read_xml(root):
# 獲取二級節點信息
students = root.findall("student")
for student in students:
name = student.find("name")
print("\n")
print("name節點的名稱為:%s, 屬性為:%s, 文本内容:%s" % (name.tag, name.attrib, name.text))
# result有“元素内容”,沒有“文本内容”,所以文本内容為空
result = student.find("result")
# 遍曆所有子節點
for course in result:
print("result子節點的名稱為:%s, 文本内容:%s" % (course.tag, course.text))
return
#修改操作
def change_xml(root):
students = root.findall("student")
for student in students:
# 1、删除不合規元素physics
result = student.find("result")
for course in result:
if course.tag == "physics":
result.remove(course)
# 2、修改name元素為對應中文
name = student.find("name")
if name.text == 'xiaoli':
name.text = '小李'
elif name.text == 'xiaohuang':
name.text = '小黃'
elif name.text == 'xiaozhang':
name.text = '小張'
if __name__ == '__main__':
#原始文件
filename = r'E:\debug\2019-students.xml'
tree = ET.parse(filename)
#獲得根節點
root = tree.getroot()
print("根節點的名稱為:%s, 屬性為:%s" % (root.tag,root.attrib))
#讀操作
read_xml(root)
# 修改操作
change_xml(root)
#保存新文件
filename_new = r'E:\debug\2019-students_new.xml'
tree.write(filename_new, "UTF-8")
4、測試驗證
4.1、讀取部分運行結果
4.2、修改部分運行結果
5、總結
熟悉XML規範,程序編碼才能更加規範效率。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!