# XML比JSON复杂.在Web中的应用也没有以前多.但很多地方依然有用
# 操作XML有两种方式: DOM 和 SAX.
# 1.DOM方式会把整个XML读入内出, 解析为树, 因此占用内存大, 解析慢.
# 2.SAX是流模式, 边读边解析, 占用内存小, 解析快.缺点是我们自己要处理事件.
# 一般情况下, 威鹏们优先考虑SAX, 因为DOM太占内存
# 在Python中, 使用SAX解析XML非常简洁, 通常我们关心的事件是start_element, end_element, char_data
# 准备好这三个函数, 就可以解析了.
# eg: <a href="/">python</a>
# 会产生3个事件,
# 1.在读取<a href="/">时, 产生start_element事件.
# 2.在读取python时, 产生char_data事件.
# 3.在读取</a>时, 产生end_element事件.
from xml.parsers.expat import ParserCreate
class DefaultSaxHandler(object):
def start_element(self, name, attrs):
print('sax:start_element: %s, attrs: %s' % (name, str(attrs)))
def end_element(self, name):
print('sax:end_elemnt: %s' % name)
def char_data(self, text):
print('sax:char_data: %s' % text)
xml = r'''<?xml version="1.0"?>
<ol>
<li><a href="/python">Python</a></li>
<li><a href="/ruby">Ruby</a></li>
</ol>
'''
handler = DefaultSaxHandler()
parser = ParserCreate()
parser.StartElementHandler = handler.start_element
parser.EndElementHandler = handler.end_element
parser.CharacterDataHandler = handler.char_data
parser.Parse(xml)
# 至于如何生成XML, 最简单的是使用拼接.如果是复杂的XML, 一般使用JSON
(内部模块)xml
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 假设场景 使用一个游戏网站的api去获得角色的id:如下: 在浏览器的地址栏直接输入上面地址能看到以下xml内容:...