资讯专栏INFORMATION COLUMN

怎么使用python中ElementTree来操作XML

89542767 / 463人阅读


  小编写这篇文章的主要目的,就是用来给大家讲解介绍一下,关于python中,使用ElementTree来操作XML,那么,具体的操作方法是什么呢?下面小编会给大家进行一个总结?


  1.引入库


  需要用到3个类,ElementTree,Element以及建立子类的包装类SubElement


 from xml.etree.ElementTree import ElementTree
  from xml.etree.ElementTree import Element
  from xml.etree.ElementTree import SubElement as SE


  2.读入并解析


  tree=ElementTree(file=xmlfile)
  root=tree.getroot()


  读入后,tree是ElementTree的类型,获取xml根结点使用getroot()方法;


  XML示例文件:


 <item sid='1712'name='大CC'>
  <a id=1></a>
  <a id=2></a>
  </item>


  3.获取子结点


  查找Element的所有子结点:


AArry=item.findall('a')

  也可使用getchildren():

 

 childs=item.getchildren()
  for subItem in childs:
  print subItem.get('id')


  4.插入子结点


  方法一:


  item=Element("item",{'sid':'1713','name':'ityouhui'})
  root.append(item)


  方法二:


 SE(root,'item',{'sid':'1713','name':'ityouhui'})


  方法一的优点,是我们在插入代码之后,可以保持对item一个操作。方法二,其就是在写作方面,其写法是比较简单的,其就是在SubElement,做了一个相关的引入声明。


  5.操作属性


  获取Element的某个属性值(eg:获取item的name)


 print root.find('item/name').text
  print item.get('name')


  获取Element所有属性


 print item.items()#[('sid','1712'),('name','大CC')]
  print item.attrib#{'sid':'1712','name':'大CC'}


  6.美化XML


  在写入之前,传入root调用此函数,写入的XML文件格式整齐美观:


 indent(root)
  book.write(xmlfile,'utf-8')
  ##Get pretty look
  def indent(elem,level=0):
  i="n"+level*""
  if len(elem):
  if not elem.text or not elem.text.strip():
  elem.text=i+""
  for e in elem:
  indent(e,level+1)
  if not e.tail or not e.tail.strip():
  e.tail=i
  if level and(not elem.tail or not elem.tail.strip()):
  elem.tail=i
  return elem

  关于python中ElementTree来操作XML就为大家介绍到这里了,希望可以给各位读者带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/127813.html

相关文章

  • Python基础之(十)模块

    摘要:是回调函数,当链接服务器和相应数据传输完毕时触发本函数可选。仅仅是针对的,在中,已经没有这个模块了,取代它的是。由于以流式读取文件,从而速度较快,切少占用内存,但是操作上稍复杂,需要用户实现回调函数。 编写模块 模块是程序 模块就是一个扩展名为.py的Python程序。 编写模块 #!/usr/bin/env python # coding=utf-8 lang = python 引...

    jlanglang 评论0 收藏0
  • Python使用xslt提取网页数据

    摘要:,用库实现网页内容提取是的一个库,可以迅速灵活地处理。,集搜客开源代码下载源开源网络爬虫源,文档修改历史,增补文字说明把跟帖的代码补充了进来,增加最后一章源代码下载源 showImg(https://segmentfault.com/img/bVvBTt); 1,引言 在Python网络爬虫内容提取器一文我们详细讲解了核心部件:可插拔的内容提取器类gsExtractor。本文记录了确定...

    mdluo 评论0 收藏0
  • Pythonic “Data Science” Specialization

    摘要:温习统计学的知识为更深层次的学习做准备在的演讲中说就是我们理解但不知道另外的是如何的我在台下想对于那可以理解的我好像都只懂了参考标准高效的流程课程用的是我不想再学一门类似的语言了我会找出相对应的和的来源流程什么是干净的一个变 Why The Data Science Specialization 温习统计学的知识, 为更深层次的学习做准备 Andrew Ng 在 2015 GTC ...

    jasperyang 评论0 收藏0
  • Python使用xslt提取网页数据

    摘要:在网络爬虫内容提取器一文我们详细了解了核心部件可插拔的内容提取器。这是第一部分,实验了方式一次性提取静态网页内容并转换成格式。 在python网络爬虫内容提取器一文我们详细了解了核心部件:可插拔的内容提取器gsExtractor。本文记录了确定gsExtractor的技术路线过程中所做的编程实验。这是第一部分,实验了xslt方式一次性提取静态网页内容并转换成xml格式。用lxml库实现...

    Jensen 评论0 收藏0
  • Python 爬取高校历年分数线

    摘要:最近一周一直在帮家里小弟看高考志愿,所以更新的没那么频繁了,请大家见谅。在看各高校的往年分数时,忍不住手痒,想着能不能给它爬下来哈哈,说干就干流程分析之前无意中在这个网站发现有各个高校的历年录取分数线。 最近一周一直在帮家里小弟看高考志愿,所以更新的没那么频繁了,请大家见谅。 在看各高校的往年分数时,忍不住手痒,想着能不能给它爬下来?哈哈,说干就干! 1 流程分析 之前无意中在这个网站...

    WilsonLiu95 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<