XML

XML是一门标记语言。也就是说,它具有包含格式化数据的文档结构。

XML文档本质上只是格式特殊的数据文件。

在XML文件中有两个位置可以保存数据值:2个标签之间,标签的属性。

导入XML数据

import xml.etree.ElementTree as ET
tree = ET.parse('data-text.xml') #把整个XML对象保存在变量tree中
root = tree.getroot() #getroot函数获得树的根元素
print(list(root)) #变量root的所有方法和属性

这样就获得了data-text.xml 文件的根元素root,并把root变为列表形式。

得到:

[<Element 'QueryParameter' at 0x000000000D864908>, <Element 'QueryParameter' at 0x000000000D864A48>, <Element 'QueryParameter' at 0x000000000D864A98>, <Element 'QueryParameter' at 0x000000000D864AE8>, <Element 'QueryParameter' at 0x000000000D864B38>, <Element 'QueryParameter' at 0x000000000D864B88>, <Element 'Copyright' at 0x000000000D864BD8>, <Element 'Disclaimer' at 0x000000000D864CC8>, <Element 'Metadata' at 0x000000000D864D68>, <Element 'Data' at 0x000000000FCC9D68>]

其中Element后面引号中为根元素root的子元素。某些元素具有子元素(不是所有)。可以用find或findall利用标签搜索子元素。

import xml.etree.ElementTree as ET
tree = ET.parse('data-text.xml') #把整个XML对象保存在变量tree中
root = tree.getroot() #getroot函数获得树的根元素
data = root.find('Data')
print(data)

得到子元素data

<Element 'Data' at 0x000000000DA29A48>

得到列表形式data

print(list(data))
[<Element 'Observation' at 0x000000000DA29A98>, <Element 'Observation' at 0x000000000DA29DB8>, <Element 'Observation' at 0x000000000DA24138>, <Element 'Observation' at 0x000000000DA24458>, <Element 'Observation' at 0x000000000DA24778>, <Element 'Observation' at 0x000000000DA24A98>, <Element 'Observation' at 0x000000000DA24DB8>, <Element 'Observation' at 0x000000000DA1ED68>, <Element 'Observation' at 0x000000000DA1EC78>, <Element 'Observation' at 0x000000000DA1E958>, <Element 'Observation' at 0x000000000DA1E408>, <Element 'Observation' at 0x000000000DA1E368>, <Element 'Observation' at 0x000000000DA1BEA8>, <Element 'Observation' at 0x000000000DA1BC28> ]
Observation为data的子元素
事实上可以这样:
import xml.etree.ElementTree as ET
tree = ET.parse('data-text.xml') #把整个XML对象保存在变量tree中
root = tree.getroot() #getroot函数获得树的根元素
data = root.find('Data')
for i in data: #data中每一个元素i
for ii in i: #每一个元素i中的每一个元素ii
print(ii.attrib) #字典形式ii
print(ii.text) #2个标签之间的文本,没有则None

Kazil J, Jarmul K. Data Wrangling with Python[J]. 2016.

python机器可读数据-XML的更多相关文章

  1. 用 ElementTree 在 Python 中解析 XML

    用 ElementTree 在 Python 中解析 XML 原文: http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python- ...

  2. python标准库xml.etree.ElementTree的bug

    使用python生成或者解析xml的方法用的最多的可能就数python标准库xml.etree.ElementTree和lxml了,在某些环境下使用xml.etree.ElementTree更方便一些 ...

  3. 在python中处理XML

    XML是实现不同语言或程序之间进行数据交换的协议,XML文件格式如下: <data> <country name="Liechtenstein"> < ...

  4. [python标准库]XML模块

    1.什么是XML XML是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词. ...

  5. python专题-读取xml文件

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...

  6. python模块:xml

    """Core XML support for Python. This package contains four sub-packages: dom -- The W ...

  7. 【304】python专题-读取xml文件

    参考:XML DOM 参考手册(w3school) 参考:python专题-读取xml文件 参考:请问用python怎么修改xml的节点值? 1. 读取标签内的文本(Python) 如下的 xml 文 ...

  8. Python模块 shelve xml configparser hashlib

    常用模块1. shelve 一个字典对象模块 自动序列化2.xml 是一个文件格式 写配置文件或数据交换 <a name="hades">123</a>3. ...

  9. python模块(shelve,xml,configparser,hashlib,logging)

    1.1shelve模块 shelve 模块比pickle模块简单,只有一个open函数,返回类似字典对象,可读可写:key必须为字符串, 而值可以是python所支持的数据类型. shelve模块主要 ...

随机推荐

  1. Python3 tkinter基础 Scrollbar pack 创建靠右、充满Y轴的垂直滚动条

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  2. jQuery添加删除

    //代码 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <titl ...

  3. julia .文档

    https://docs.julialang.org/en/v1/manual/getting-started/

  4. 本地连接属性:Internet协议版本4(TCP/IPv4)打开闪退解决办法

    1.命令窗口配置网络连接指定IP netsh interface ip set address "本地连接" static IP地址 子网掩码 默认网关 例:netsh inter ...

  5. IDEA 介绍

    转载:https://blog.csdn.net/kanchaishaonian/article/details/81107210 前言:IntelliJ IDEA 如果说IntelliJ IDEA是 ...

  6. Collectors类中的静态工厂方法

    工厂方法 返回类型 用于 toList List<T> 把流中的所有数据元素收集到List集合中. stream.collect(toList());  toSet Set<T> ...

  7. 使用Selenium模块报错的解决办法 (FileNotFound,WebDriverException)

    添加Chrome浏览器程序的目录到系统Path变量中: C:\Users\%USERNAME%\AppData\Local\Google\Chrome\Application ,使用pip3 inst ...

  8. R语言 重命名目录下所有文件

    myfilepath <- "F:/paper2/climateExposure/wjj_mec/second/paths/" setwd(myfilepath) allty ...

  9. [python]目录及文件操作

    Python OS模块和shutil模块 获取路径 # 获取当前路径 pwd = os.getcwd() # 获取上级路径 a_pwd = os.path.abspath(os.path.dirnam ...

  10. mac os x 编译spark-2.1.0 for hadoop-2.7.3

    mac os x maven编译spark-2.1.0  for hadoop-2.7.3 1.官方文档中要求安装Maven 3.3.9+ 和Java 8 ; 2.执行         export ...