设为首页 加入收藏

TOP

day5模块学习--XML模块(一)
2017-09-30 17:55:48 】 浏览:5655
Tags:day5 模块 学习 --XML

XML文件处理

    XML文件处理,有好几种方式,这里介绍一下xml.etree.ElementTree as ET。

    注意:xml.etree.ElementTree模块在应对恶意结构数据时显得并不安全。

    每个element对象都具有以下属性:

    1. tag:string对象,表示数据代表的种类;

    2. attrib:dictionary对象,表示附有的属性;

    3. text:string对象,表示element的内容;

    4. tail:string对象,表示element闭合之后的尾迹

    5. 若干子元素(child elements)。

    <tag attrib1=1>text</tab>tail

      1     2       3         4

    创建元素的方法有Element或者SubElement(),前者称作元素的构建函数(constructor),用以构建任一独存的元素;后者称作元素的制造函数(factory function),用以制造某一元素的子元素。

    有了一串元素之后,使用ElementTree类来将其打包,把一串元素转换为xml文件或者XML文件中解析出来。

    若想加快速度,可以使用C语言编译的API xml.etree.cElementTree。

    在使用xml.etree.ElementTree时,一般都按如下导入:

    try:
    import xml.etree.ElementTree as ET
  except ImportError:
    import xml.etree.cElementTree as ET

    XML是中结构化数据形式,在ET中使用ElementTree代表整个XML文档,并视其为一棵树,Element代表这个文档树中的单个节点。

    ET对象具有多种方法从不同来源导入数据,如下:

#从硬盘的xml文件读取数据
try
: import xml.etree.ElementTree as ET except ImportError: import xml.etree.cElementTree as ET tree = ET.parse("XML文件") #载入数据 root = tree.getroot() print(root) print(root.tag) #获取根节点

 

    #遍历xml文档

   

try:
    import xml.etree.ElementTree as ET
except ImportError:
    import xml.etree.cElementTree as ET

tree = ET.parse("XML文件")     #载入数据
root = tree.getroot()
for child in root:             #遍历节点
    print(child.tag,child.attrib)
输出如下:
country {'name': 'Liechtenstein'}
country {'name': 'Singapore'}
country {'name': 'Panama'}

    #只遍历year 节点

   

try:
    import xml.etree.ElementTree as ET
except ImportError:
    import xml.etree.cElementTree as ET

tree = ET.parse("XML文件")     #载入数据
root = tree.getroot()
for node in root.iter("year"):
    print(node.tag,node.text)
输出如下:
year 2008
year 2011
year 201

    修改和删除xml文档内容

   

try:
    import xml.etree.cElementTree as ET
except ImportError:
    import xml.etree.ElementTree as ET

tree = ET.parse("XML文件")     #载入数据
root = tree.getroot()
#修改
for node in root.iter("year"):
    new_year = int(node.text) + 1     #node.text()值,属性的值
    node.text = str(new_year)
    node.set("update","yes")

tree.write("XML文件")     #修改文件之后,重新写入文件里面,不然修改文件是无效的


#删除node
for country in root.findall("country"):
    rank = int(country.find("rank").text)
    if rank > 50:
        root.remove(country)

tree.write("output.xml")

    文件操作中,每次修改完成数据之后,要重新写会文件之中,不然修改文件是没有用的。要重新写会文件才有效果。

    Element中的遍历与查询

 

    Element.iter(tag=None):遍历该Element所有后代,也可以指定tag进行遍历寻找。

    try:
    import xml.etree.ElementTree as ET
  except ImportError:
    import xml.etree.cElementTree as ET
  tree = ET.parse("XML文件") #载入数据
  root = tree.getroot()
  for node in root.iter():
    print(node)

    Element.findall(path):

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇linux用户及权限管理 下一篇pyhton购物程序

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目