python_xml文件的解析与构建
2017-10-25 22:16
381 查看
官方文档:https://docs.python.org/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree
解析xml文档:将xml文档解析,获取文档中的内容
采用xml.tree.ElementTree模块的parse函数
官方文档中还提及到一些查找节点元素的方法如下:
构建xml文档:将某些文件用xml格式文件表示。使用xml.etree.ElementTree模块的ElementTree,Element
解析xml文档:将xml文档解析,获取文档中的内容
采用xml.tree.ElementTree模块的parse函数
from xml.etree.ElementTree import parse path = r'E:\settings.xml' f = open(path) tree= parse(path) #创建一个xml对象 root = tree.getroot() #获得结构树根节点 print('输出根节点的标签:%s'%root.tag) #.tag获取标签值 print('输出根节点的属性:%s'%root.attrib) #.attrib获取属性值 #获取root下的子节点 for child in root: print('子节点标签:%s,子节点属性%s:'%(child.tag,child.attrib))#只能找出root下的第一级子节点 print('root下第一个子节点下的第二个子节点的内容%s:'%root[0][1].text) print('输出所以结点内容%s:'%list(root.iter())) print('输出所有节点为neighbor的节点%s:'%list(root.iter('neighbor'))) #root.iter('neighbor')可进行迭代,获取其属性、标签等内容 for x in root.iter('neighbor'): print('子节点neighbor的属性%s'%x.attrib) #find,findall方法 for country in root.findall('country'): rank = country.find('rank').text name = country.get('name') print(rank,name) #set方法,设置属性 for rank in root.iter('rank'): newrank = int(rank.text)+1 rank.text = str(newrank) rank.set('updated','yes') tree.write(path) print('update success') print('neighbor节点direction属性等于w的节点%s'%root.findall('.//neighbor[@direction="W"]'))#采用[@attrib]
官方文档中还提及到一些查找节点元素的方法如下:
import xml.etree.ElementTree as ET root = ET.fromstring(countrydata) # Top-level elements root.findall(".") # All 'neighbor' grand-children of 'country' children of the top-level # elements root.findall("./country/neighbor") # Nodes with name='Singapore' that have a 'year' child root.findall(".//year/..[@name='Singapore']") # 'year' nodes that are children of nodes with name='Singapore' root.findall(".//*[@name='Singapore']/year") # All 'neighbor' nodes that are the second child of their parent root.findall(".//neighbor[2]")
构建xml文档:将某些文件用xml格式文件表示。使用xml.etree.ElementTree模块的ElementTree,Element
import csv from xml.etree.ElementTree import ElementTree,Element def pretty(e,level=0): if len(e)>0: e.text = '\n'+'\t'*(level+1) for child in e: pretty(child,level+1) child.tail = child.tail[:-1] e.tail='\n'+'\t'*level #将一个csv文件,构建为xml文档 def csvToXml(csv_file): with open(csv_file,'r') as f: reader = csv.reader(f) #创建一个csv读取对象 header = next(reader)#获取第一行列名字段 print(header) root = Element('Data')#创建根节点 for row in reader: eRow = Element('Row')#创建第一层子节点 root.append(eRow)#将eRow子节点加到root节点下 for tag,text in zip(header,row): eCont = Element(tag)#创建第二层子节点元素 eCont.text = text eRow.append(eCont) pretty(root)#pretty方法用于美化构建的xml文件 return ElementTree(root) #将xml格式内容写入文件 path = r'E:\xxx.csv' et=csvToXml(path) xml_path = r'E:\xxx.xml' et.write(xml_path,encoding='utf-8')#采用write方法将xml写入文件 #添加encoding='utf-8'使中文字符正常显示
相关文章推荐
- Python解析xml文件(二)
- Python 解析xml文件
- Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库
- 利用python的xmllib2实现XML文件解析
- python解析xml文件实例分享
- 分析Python中解析构建数据知识
- python解析GBK格式xml文件
- 使用python解析Wordpress导出的xml文件
- python解析xml文件实例分享
- Python xml.etree.ElementTree解析XML文件实例演示(十六02)
- Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库
- 解析XML文件总结 分类: python基础学习 python 2013-06-17 12:04 232人阅读 评论(0) 收藏
- Python解析xml文件遇到的编码解析的问题
- python xml.etree.ElementTree解析xml文件获取节点
- python使用ElementTree解析XML文件
- Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库
- python语言解析xml文件的常用的有两种方式
- Python SAX模块对大xml文件解析的错误认识
- Python 解析XML文件