首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

怎么用python解析带有命名空间的xml文件

2012-09-23 
如何用python解析带有命名空间的xml文件?xml version1.0 encodingUTF-8?feed xmlnshttp://www.

如何用python解析带有命名空间的xml文件
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:db="http://www.douban.com/xmlns/" xmlns:gd="http://schemas.google.com/g/2005" xmlns:opensearch="http://a9.com/-/spec/opensearchrss/1.0/">
<title>阿北 的朋友</title>
<author>
<link href="http://api.douban.com/people/ahbei" rel="self"/>
<link href="http://www.douban.com/people/ahbei/" rel="alternate"/>
<link href="http://t.douban.com/icon/u1000001-14.jpg" rel="icon"/>
<name>阿北</name>
<uri>http://api.douban.com/people/1000001</uri>
</author>
<opensearch:startIndex>1</opensearch:startIndex>
<opensearch:itemsPerPage>2</opensearch:itemsPerPage>
<opensearch:totalResults>114</opensearch:totalResults>
<entry>
<id>http://api.douban.com/people/1010394</id>
<title>Engo@寻各种达人</title>
<link href="http://api.douban.com/people/1010394" rel="self"/>
<link href="http://www.douban.com/people/akin/" rel="alternate"/>
<link href="http://t.douban.com/icon/u1010394-10.jpg" rel="icon"/>
<link href="http://www.halfull.cn" rel="homepage"/>
<content>但行好事,莫问前程。

http://www.douban.com/group/topic/3750385/ 寻各种达人

我的"朋友"
那会是已经认识很久或将要认识并能持续很久的人,谢谢。</content>

<db:location id="beijing">北京</db:location>
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:db="http://www.douban.com/xmlns/" xmlns:gd="http://schemas.google.com/g/2005" xmlns:opensearch="http://a9.com/-/spec/opensearchrss/1.0/">
<title>阿北 的朋友</title>
<author>
<link href="http://api.douban.com/people/ahbei" rel="self"/>
<link href="http://www.douban.com/people/ahbei/" rel="alternate"/>
<link href="http://t.douban.com/icon/u1000001-14.jpg" rel="icon"/>
<name>阿北</name>
<uri>http://api.douban.com/people/1000001</uri>
</author>
<opensearch:startIndex>1</opensearch:startIndex>
<opensearch:itemsPerPage>2</opensearch:itemsPerPage>
<opensearch:totalResults>114</opensearch:totalResults>
<entry>
<id>http://api.douban.com/people/1010394</id>
<title>Engo@寻各种达人</title>
<link href="http://api.douban.com/people/1010394" rel="self"/>
<link href="http://www.douban.com/people/akin/" rel="alternate"/>
<link href="http://t.douban.com/icon/u1010394-10.jpg" rel="icon"/>
<link href="http://www.halfull.cn" rel="homepage"/>
<content>但行好事,莫问前程。

http://www.douban.com/group/topic/3750385/ 寻各种达人

我的"朋友"
那会是已经认识很久或将要认识并能持续很久的人,谢谢。</content>

<db:location id="beijing">北京</db:location>
<db:uid>akin</db:uid>
</entry>
<entry>
<id>http://api.douban.com/people/1276180</id>
<title>蒜王子(((?)))</title>
<link href="http://api.douban.com/people/1276180" rel="self"/>
<link href="http://www.douban.com/people/movie007wn/" rel="alternate"/>
<link href="http://t.douban.com/icon/u1276180-40.jpg" rel="icon"/>
<content>♂┣▇▇▇═—。
???????????????</content>
<db:location id="beijing">北京</db:location>


<db:uid>movie007wn</db:uid>
</entry>
</feed></entry>
<entry>
<id>http://api.douban.com/people/1276180</id>
<title>蒜王子(((?)))</title>
<link href="http://api.douban.com/people/1276180" rel="self"/>
<link href="http://www.douban.com/people/movie007wn/" rel="alternate"/>
<link href="http://t.douban.com/icon/u1276180-40.jpg" rel="icon"/>
<content>♂┣▇▇▇═—。
???????????????</content>
<db:location id="beijing">北京</db:location>
<db:uid>movie007wn</db:uid>
</entry>
</feed>
如何用python提取节点<db:uid>里的内容?

[解决办法]
# 文档用问题吧,中间还有<xml???????
from xml.sax import *
from xml.sax.handler import *

class Handler(ContentHandler):
def __init__(self, *args):
super().__init__(*args)
self.in_uid = False
def startElement(self, name, attrs):
if name == "db:uid":
self.in_uid = True
def characters(self, data):
if self.in_uid:
self.data = data
def endElement(self, name):
if name == "db:uid":
print(self.data)
self.data = None
f = open("xmlfile.xml", encoding = "utf8")
parse(f, Handler())

热点排行