日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python解析xml文件方式(解析、更新、寫(xiě)入)

瀏覽:219日期:2022-08-03 16:58:22

Overview

這篇博客內(nèi)容將包括對(duì)XML文件的解析、追加新元素后寫(xiě)入到XML,以及更新原XML文件中某結(jié)點(diǎn)的值。使用的是python的xml.dom.minidom包,詳情可見(jiàn)其官方文檔:xml.dom.minidom官方文檔。全文都將圍繞以下的customer.xml進(jìn)行操作:

<?xml version='1.0' encoding='utf-8' ?><!-- This is list of customers --><customers> <customer ID='C001'> <name>Acme Inc.</name> <phone>12345</phone> <comments> <![CDATA[Regular customer since 1995]]> </comments> </customer> <customer ID='C002'> <name>Star Wars Inc.</name> <phone>23456</phone> <comments> <![CDATA[A small but healthy company.]]> </comments> </customer></customers>

CDATA:在XML中,不會(huì)被解析器解析的部分?jǐn)?shù)據(jù)。

聲明:在本文中,結(jié)點(diǎn)和節(jié)點(diǎn)被視為了同一個(gè)概念,你可以在全文的任何地方替換它,我個(gè)人感覺(jué)區(qū)別不是很大,當(dāng)然,你也可以看做是我的打字輸入錯(cuò)誤。

1. 解析XML文件

在解析XML時(shí),所有的文本都是儲(chǔ)存在文本節(jié)點(diǎn)中的,且該文本節(jié)點(diǎn)被視為元素結(jié)點(diǎn)的子結(jié)點(diǎn),例如:2005,元素節(jié)點(diǎn) ,擁有一個(gè)值為 “2005” 的文本節(jié)點(diǎn),“2005” 不是 元素的值,最常用的方法就是getElementsByTagName()方法了,獲取到結(jié)點(diǎn)后再進(jìn)一步根據(jù)文檔結(jié)構(gòu)解析即可。

具體的理論就不過(guò)多描述,配合上述XML文件和下面的代碼,你將清楚的看到操作方法,下面的代碼執(zhí)行的工作是將所有的結(jié)點(diǎn)名稱(chēng)以及結(jié)點(diǎn)信息輸出一下:

# -*- coding: utf-8 -*-''' @Author : LiuZhian @Time : 2019/4/24 0024 上午 9:19 @Comment : '''from xml.dom.minidom import parsedef readXML(): domTree = parse('./customer.xml') # 文檔根元素 rootNode = domTree.documentElement print(rootNode.nodeName) # 所有顧客 customers = rootNode.getElementsByTagName('customer') print('****所有顧客信息****') for customer in customers: if customer.hasAttribute('ID'): print('ID:', customer.getAttribute('ID')) # name 元素 name = customer.getElementsByTagName('name')[0] print(name.nodeName, ':', name.childNodes[0].data) # phone 元素 phone = customer.getElementsByTagName('phone')[0] print(phone.nodeName, ':', phone.childNodes[0].data) # comments 元素 comments = customer.getElementsByTagName('comments')[0] print(comments.nodeName, ':', comments.childNodes[0].data)if __name__ == ’__main__’: readXML()

python解析xml文件方式(解析、更新、寫(xiě)入)

2. 寫(xiě)入XML文件

在寫(xiě)入時(shí),我覺(jué)得可分為兩種方式:

新建一個(gè)全新的XML文件

在已有XML文件基礎(chǔ)上追加一些元素信息

至于以上兩種情況,其實(shí)創(chuàng)建元素結(jié)點(diǎn)的方法類(lèi)似,你必須要做的都是先創(chuàng)建/得到一個(gè)DOM對(duì)象,再在DOM基礎(chǔ)上創(chuàng)建new一個(gè)新的結(jié)點(diǎn)。

如果是第一種情況,你可以通過(guò)dom=minidom.Document()來(lái)創(chuàng)建;如果是第二種情況,直接可以通過(guò)解析已有XML文件來(lái)得到dom對(duì)象,例如dom = parse('./customer.xml')

在具體創(chuàng)建元素/文本結(jié)點(diǎn)時(shí),你大致會(huì)寫(xiě)出像以下這樣的“四部曲”代碼:

①創(chuàng)建一個(gè)新元素結(jié)點(diǎn)createElement()

②創(chuàng)建一個(gè)文本節(jié)點(diǎn)createTextNode()

③將文本節(jié)點(diǎn)掛載元素結(jié)點(diǎn)上

④將元素結(jié)點(diǎn)掛載到其父元素上。

現(xiàn)在,我需要新建一個(gè)customer節(jié)點(diǎn),信息如下:

<customer ID='C003'> <name>kavin</name> <phone>32467</phone> <comments> <![CDATA[A small but healthy company.]]> </comments> </customer>

代碼如下:

def writeXML(): domTree = parse('./customer.xml') # 文檔根元素 rootNode = domTree.documentElement # 新建一個(gè)customer節(jié)點(diǎn) customer_node = domTree.createElement('customer') customer_node.setAttribute('ID', 'C003') # 創(chuàng)建name節(jié)點(diǎn),并設(shè)置textValue name_node = domTree.createElement('name') name_text_value = domTree.createTextNode('kavin') name_node.appendChild(name_text_value) # 把文本節(jié)點(diǎn)掛到name_node節(jié)點(diǎn) customer_node.appendChild(name_node) # 創(chuàng)建phone節(jié)點(diǎn),并設(shè)置textValue phone_node = domTree.createElement('phone') phone_text_value = domTree.createTextNode('32467') phone_node.appendChild(phone_text_value) # 把文本節(jié)點(diǎn)掛到name_node節(jié)點(diǎn) customer_node.appendChild(phone_node) # 創(chuàng)建comments節(jié)點(diǎn),這里是CDATA comments_node = domTree.createElement('comments') cdata_text_value = domTree.createCDATASection('A small but healthy company.') comments_node.appendChild(cdata_text_value) customer_node.appendChild(comments_node) rootNode.appendChild(customer_node) with open(’added_customer.xml’, ’w’) as f: # 縮進(jìn) - 換行 - 編碼 domTree.writexml(f, addindent=’ ’, encoding=’utf-8’)if __name__ == ’__main__’: writeXML()

python解析xml文件方式(解析、更新、寫(xiě)入)

3. 更新XML文件

在更新XML時(shí),只需先找到對(duì)應(yīng)的元素結(jié)點(diǎn),然后將其下的文本結(jié)點(diǎn)或?qū)傩匀≈蹈录纯?,然后保存到文件,具體我就不多說(shuō)了,代碼中我將思路都注釋清楚了,如下:

def updateXML(): domTree = parse('./customer.xml') # 文檔根元素 rootNode = domTree.documentElement names = rootNode.getElementsByTagName('name') for name in names: if name.childNodes[0].data == 'Acme Inc.': # 獲取到name節(jié)點(diǎn)的父節(jié)點(diǎn) pn = name.parentNode # 父節(jié)點(diǎn)的phone節(jié)點(diǎn),其實(shí)也就是name的兄弟節(jié)點(diǎn) # 可能有sibNode方法,我沒(méi)試過(guò),大家可以google一下 phone = pn.getElementsByTagName('phone')[0] # 更新phone的取值 phone.childNodes[0].data = 99999 with open(’updated_customer.xml’, ’w’) as f: # 縮進(jìn) - 換行 - 編碼 domTree.writexml(f, addindent=’ ’, encoding=’utf-8’)if __name__ == ’__main__’: updateXML()

python解析xml文件方式(解析、更新、寫(xiě)入)

如有不對(duì)之處,還煩請(qǐng)指教~

補(bǔ)充知識(shí):python 讀取xml文件內(nèi)容并完成修改

我就廢話不多說(shuō)了,還是直接看代碼吧!

import osimport xml.etree.ElementTree as ETdef changesku(inputpath): listdir = os.listdir(inputpath) for file in listdir: if file.endswith(’xml’): file = os.path.join(inputpath,file) tree = ET.parse(file) root = tree.getroot() for object1 in root.findall(’object’): #我要修改的元素在object里面,所以需要先找到objectfor sku in object1.findall(’name’): #查找想要修改的所有同種元素 if (sku.text == ’005’): #‘005’為原始的text sku.text = ’008’ #修改‘name’的標(biāo)簽值 tree.write(file,encoding=’utf-8’) #寫(xiě)進(jìn)原始的xml文件,不然修改就無(wú)效,‘encoding = “utf - 8”’避免原始xml #中文字符亂碼 else: pass else: passif __name__ == ’__main__’: inputpath = ’D:easyhebing_xml’ #這是xml文件的文件夾的絕對(duì)地址 changesku(inputpath)

以上這篇python解析xml文件方式(解析、更新、寫(xiě)入)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲作爱视频| 蜜桃91丨九色丨蝌蚪91桃色| 98精品视频| 欧美日韩国产探花| 妖精视频成人观看www| 中文字幕日本一区二区| 国产欧美三级| 国产美女高潮在线| 伊人久久亚洲热| 国产探花一区| 99精品视频在线| 综合一区二区三区| 国产成人免费视频网站视频社区| 激情欧美一区二区三区| 综合激情网...| 国内精品伊人| 好看的亚洲午夜视频在线| 日本午夜免费一区二区| 免费看av不卡| 日韩精品一区第一页| 免费一级欧美在线观看视频| 欧美精选一区二区三区| 91免费精品国偷自产在线在线| 色欧美自拍视频| 蜜臀久久久久久久| 精品国产网站| 日韩在线卡一卡二| 国产va免费精品观看精品视频| 六月婷婷一区| 国产h片在线观看| 日韩精品欧美大片| 日韩毛片在线| 国产精品久久久久久久久久妞妞 | 国产经典一区| 欧美精品一区二区三区精品| 国产亚洲精品美女久久| 精品在线播放| 精品国产三区在线| 中文字幕中文字幕精品| 免费亚洲一区| 蜜臀久久99精品久久久久宅男| 国产在线日韩精品| 亚洲69av| 亚洲激情欧美| 吉吉日韩欧美| 国产伦精品一区二区三区在线播放 | 日韩黄色在线观看| 日韩不卡在线| 国产精品久久久久9999高清| 香蕉久久国产| 日韩久久精品| 国产精品videossex久久发布 | 国产一区日韩欧美| 久久精品五月| 日本不卡的三区四区五区| 成人久久久久| 嫩呦国产一区二区三区av| 天堂av在线一区| 视频福利一区| 国产精品毛片久久| 91精品国产自产精品男人的天堂 | 精精国产xxxx视频在线野外| 国产精选一区| 日本久久一区| 亚洲丝袜美腿一区| 亚洲一区网站| 免费视频亚洲| 日韩中文首页| 97精品国产| 欧美激情五月| 欧美日韩一区二区三区四区在线观看| 亚洲成人一区| 99精品视频在线| 日韩欧美1区| 久久中文字幕一区二区三区| 日韩精品社区| 亚洲精品影院在线观看| 亚洲黄页一区| 国产精品99一区二区| 国产suv精品一区二区四区视频| 国产精品亚洲欧美日韩一区在线 | 国产精品av久久久久久麻豆网| 国产不卡一区| 国产一区丝袜| 国产乱人伦丫前精品视频| 97久久中文字幕| 日韩高清不卡在线| 奇米狠狠一区二区三区| 日韩午夜视频在线| 色综合视频一区二区三区日韩| 中文字幕av一区二区三区四区| 男人操女人的视频在线观看欧美| 亚洲欧美日本日韩| 六月丁香综合| | 乱一区二区av| 久久精品国产99国产精品| 国产福利亚洲| 国产精品对白| 精品欠久久久中文字幕加勒比| 丁香婷婷久久| 欧美成人基地 | 国产伊人精品| 亚洲一区免费| 亚洲69av| 国产精品一页| 精品国产aⅴ| 日韩免费福利视频| 激情婷婷欧美| 91九色精品| 免费在线观看成人| 亚洲精品成人一区| 欧美一级网站| 精品一区二区三区亚洲| 久久影院午夜精品| 91精品国产福利在线观看麻豆| 欧美成人综合| 一本综合精品| 欧美激情久久久久久久久久久| 一区二区精品伦理...| 激情视频一区二区三区| 爽好多水快深点欧美视频| 日韩精品欧美精品| 久久精品日韩欧美| 日韩在线第七页| 日韩网站在线| 日韩有码av| 精品91福利视频| 欧美精品羞羞答答| 亚洲免费毛片| 久久精品一本| 一区二区三区四区在线看| 老司机精品久久| 欧美激情视频一区二区三区免费| 电影亚洲精品噜噜在线观看 | 免费人成精品欧美精品| 日韩一区二区三区精品视频第3页| 国产精品va| 国产中文一区| 亚洲aⅴ网站| 岛国精品一区| 午夜亚洲精品| 精品亚洲免a| 欧美在线亚洲| 国产欧美日韩在线一区二区| 播放一区二区| 91精品国产经典在线观看| 国产精品久久观看| 水蜜桃久久夜色精品一区的特点| 国产精品2023| 午夜免费一区| 国产精品嫩草影院在线看| 91精品一区国产高清在线gif | 免费观看在线综合| 精品国产亚洲一区二区在线观看| 国产99久久| 国产日产精品_国产精品毛片| 99久久久国产精品美女| 日韩av一区二区三区四区| 日产精品一区| 日本aⅴ精品一区二区三区 | 国产乱论精品| 欧美精品一线| 久久精品日韩欧美| 亚洲视频二区| 日韩中文在线电影| 日韩精品视频网| 欧美日中文字幕| 欧美韩一区二区| 蜜桃视频免费观看一区| 天堂中文在线播放| 欧美一级网址| 黑丝一区二区三区| 精品国产不卡一区二区| 美国欧美日韩国产在线播放| 麻豆视频在线看| 视频一区中文字幕精品| 在线成人动漫av| 美女精品一区二区| 少妇精品在线| 欧美日韩国产在线一区| 加勒比视频一区| 日韩国产欧美视频| 亚洲激情另类| 成人羞羞在线观看网站| 日韩精品乱码av一区二区| 久久久精品午夜少妇| 久久精品99国产精品| 中文精品视频| 精精国产xxxx视频在线野外| 国产精品白丝一区二区三区| 99综合视频| 视频福利一区| 精品99久久| 国产精品一区二区精品| 亚洲伊人精品酒店| 激情综合自拍| 日本高清不卡一区二区三区视频| 国产精品久久久网站| 日韩高清国产一区在线|