十分像HTML, 也是一层一层,在主要信息外面包一些报头。XML 被设计用来传输和存储数据,但本身是不工作的,只是一种结构。
1. XML 基础
什么是 XML?
XML 指可扩展标记语言(EXtensible Markup Language)
XML 的设计宗旨是传输数据,而非显示数据XML 与 HTML 的主要差异
XML 被设计为传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息,而 XML 旨在传输信息。XML用来做什么:
通过 XML,数据能够存储在独立的 XML 文件中。这样你就可以专注于使用 HTML 进行布局和显示,并确保修改底层数据不再需要对 HTML 进行任何的改变。
-
XML tree
XML-tree XML用法,一对这样用
一边是document 信息,另一边是协同的schema contract。
XML-pair1
XML-pair2
2. 一个简单的过滤例子
-
直接取出来, find
XML-parse-1 先把外面的大类取出来变为列表,然后再把内容从列表中取出。注意findall中括号的写法,要写出层级结构。
XML-parse-2
import xml.etree.ElementTree as ET
input = '''
<stuff>
<users>
<user x="2">
<id>001</id>
<name>Chuck</name>
</user>
<user x="7">
<id>009</id>
<name>Brent</name>
</user>
</users>
</stuff>'''
tree = ET.fromstring(input)
#这一句要把层级结构写出来,把uders中的user记录为一个个node,形成一个列表list
people = tree.findall('users/user')
for person in people:
print('name',person.find('name').text)
- 用urllib把数据从XML网页中取出,然后进行处理。
import urllib.request, urllib.parse, urllib.error
import xml.etree.ElementTree as ET
url = 'http://py4e-data.dr-chuck.net/comments_79228.xml'
print('Retrieving', url)
uh = urllib.request.urlopen(url)
data = uh.read()
print('Retrieved', len(data), 'characters')
tree = ET.fromstring(data)
comments_node = tree.findall('comments')
comment_node = comments_node[0].findall('comment')
total = 0
for node in comment_node:
total = total + int(node.find('count').text)
print(total)
3. 时区问题
如需规定一个时区,您也可以通过在日期后加一个 "Z" 的方式,使用世界调整时间(UTC time)来输入一个日期 - 比如这样:<start>2002-09-24Z</start>
参考资料:
- w3 school, XML 教程
- coursera py4e 课程