xml的檔案的讀寫和增刪改查

2021-10-11 18:47:16 字數 3440 閱讀 8347

要想理解xml的用法,首先要理解xml結構中每個部分代表的意義:

每個節點的格式以及表示的意義:

text  # 每個節點的主要格式

# tag  表示這個節點的名字或者交標籤 (只能有乙個)

# attr 表示這個標籤的屬性,可以有多個屬性的值

# text 表示這個標籤的內容是

父節點的tag是: 書店

父節點的text是:『\n』

節點的tag為: 紅樓夢

節點的text為: 乙個家族的興衰

從檔案中讀xml :

>>> import xml.etree.elementtree as et

>>> tree= et.parse('/root/info')

>>> root = tree.getroot()

從字串中讀入:

>>> import xml.etree.elementtree as et

>>> root = et.fromsring(str_xml) # str_xml 表示字串

字串xml寫入到檔案

>>> import xml.etree.elementtree as et

>>> root = et.fromsring(str_xml) # str_xml 表示xml字串

>>> tree = et.elementtree(root)

>>> tree.write(path, encoding='utf-8',xml_declaration=true) # path 表示輸出的檔案路徑

從檔案中讀入,再寫入檔案中:path1 和 path2 可以不同

>>> import xml.etree.elementtree as etparse

>>> tree = et.parse(path) # path1 讀入的路徑

>>> root = tree.getroot() # 獲取根節點

>>> tree.write(path2, encoding='utf-8',xml_declaration=true) # path2 表示輸出的檔案路徑

建立乙個節點:

>>> from lxml.etree import element

>>> node = element('紅樓夢') # tag 表示要建立的tag

>>> node.set('**', '20') # 為tag 新增屬性

>>> node.text('乙個家族的興衰') # 為tag新增text

# 可以換一種方式新增屬性

>>> from lxml.etree import element

>>> node = element('紅樓夢' ) # tag 表示要建立的tag

>>> node.text('乙個家族的興衰') # 為tag新增text

把建立的node新增到xml,

# 從檔案中讀入xml,新增後在寫入xml

>>> import xml.etree.elementtree as etparse

>>> from lxml.etree import element

# 建立節點node

>>> node = element('紅樓夢' ) # tag 表示要建立的tag

>>> node.text('乙個家族的興衰') # 為tag新增text

# 從檔案中讀取xml

>>> tree = et.parse(path) # path1 讀入的路徑

>>> root = tree.getroot()

# 為根節點增加乙個子節點

# 或者換一種方式

>>>root.insert(1,node) # 1表示要插入的位置

# 再寫入到檔案

>>> tree.write(path2, encoding='utf-8',xml_declaration=true) # path2 表示輸出的檔案路徑

查詢目前還沒有什麼好的方法,還是便利整個xml檔案

# 從檔案中讀入xml,新增後在寫入xml

>>> import xml.etree.elementtree as etparse

>>> from lxml.etree import element

# 從檔案中讀取xml

>>> tree = et.parse(path) # path1 讀入的路徑

>>> root = tree.getroot()

# 查詢root下有幾個子節點

>>> node_list = root.findall('*') # 返回乙個子節點的列表,然後遍歷這個list,根據體條件查詢

.....

.....

# 再寫入到檔案

>>> tree.write(path2, encoding='utf-8',xml_declaration=true) # path2 表示輸出的檔案路徑

查詢的可以參考:

可以根據上邊的方法查詢到要修改的node,ps: 把數的**改為30元

# 獲取屬性

>>> node.get('**')

# 修改屬性

>>> node.set('**', 30)

刪除的話要注意,必須是刪除刪除父節點的子節點,不能跨節點刪除

# 刪除的命令

>>> root.remove(node)

# 其中node必須是root的子節點,或者root必須是node的父節點

# 否則就會刪除失敗

可以看乙個例子

<?xml version="1.0" encoding="utf-8"?>

張三18

89 李四

1981

王五1792

根節點只能刪除 tag是student的節點, tag是student的只能刪除節點tag是 name、 age、 score的節點

增刪改Xml檔案

using system using system.collections using system.componentmodel using system.data using system.drawing using system.web using system.web.sessionstat...

C 本地xml檔案進行增刪改查

專案新增xml檔案 facexml.xml,並複製到輸出目錄 facexml.xml facebyte 專案新增xmlhelper幫助類 using system using system.collections.generic using system.linq using system.text...

使用python操作XML增刪改查

官方文件 import xml.etree.elementtree as et可以從xml檔案 字串中解析 新建乙個xml檔案 張三18 89 李四 1981 王五1792 tree et.parse students.xml root tree.getroot root et.fromstring...