编程知识 购物 网址 新闻 笑话 | 软件 日历 阅读 图书馆 China 头条阅读 学淘股 China Travel
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
   -> Ruby -> day5模块学习 -> 正文阅读

[Ruby]day5模块学习

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):查找当前元素下tag或path能够匹配的直系节点。
    Element.find(path):查找当前元素下tag或path能够匹配的首个直系节点。
    Element.text: 获取当前元素的text值。
    Element.get(key, default=None):获取元素指定key对应的属性值,如果没有该属性,则返回default值。
    ElementTree对象

class xml.etree.ElementTree.ElementTree(element=None, file=None)
  element如果给定,则为新的ElementTree的根节点。

  _setroot(element):用给定的element替换当前的根节点。慎用。
  
  # 以下方法与Element类中同名方法近似,区别在于它们指定以根节点作为操作对象。
  find(match)
  findall(match)
  findtext(match, default=None)
  getroot():获取根节点.
  iter(tag=None)
  iterfind(match)
  parse(source, parser=None):装载xml对象,source可以为文件名或文件类型对象.
  write(file, encoding="us-ascii", xml_declaration=None, default_namespace=None,method="xml")

    自己创建xml文档
   

import xml.etree.ElementTree as ET       
 
 
new_xml = ET.Element("namelist")                                     #根节点namelist
name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"})       #SubElement()子节点,new_xml的子节点
age = ET.SubElement(name,"age",attrib={"checked":"no"})              #创建子节点,name下的age节点
sex = ET.SubElement(name,"sex")
age.text = '33'                                                      #写入值,age赋值
name2 = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"})
age = ET.SubElement(name2,"age")
age.text = '19'
 
et = ET.ElementTree(new_xml) #生成文档对象
et.write("test.xml", encoding="utf-8",xml_declaration=True)
 
ET.dump(new_xml) #打印生成的格式 

  Ruby 最新文章
Ruby基础教程
python 字符串和列表、字典的转换
【夯实Ruby基础】Ruby快速入门
总结:Ruby里是值传递还是引用传递
学习笔记TF042:TF.Learn、分布式Estimator、
GitLab Development Kit 环境搭建
Ruby On Rails环境搭建
python 字符串和列表、字典的转换
自然语言处理3.7——用正则表达式为文本分词
墙国内新建Rails应用的要点(windows 7环境,
上一篇文章           查看所有文章
加:2017-07-23 23:23:51  更:2017-07-23 23:23:53 
 
360图书馆 软件开发资料 购物精选 新闻资讯 Chinese Culture 三丰软件 开发 中国文化 阅读网 头条阅读 学淘股 China Travel 日历 万年历 2020年5日历
2020-5-31 4:13:11
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程知识