关于读取xml的问题

ft1834334 2012-04-15 07:31:35
owners.xml
<owners>
<owner name="jack">
<filename>looting</filename>
<filename>RaceConfig</filename>
</owner>

<owner name="rose">
<filename>NBACourt</filename>
<filename>StreetCourt</filename>
</owner>

<owner name="mike">
<filename>ControlGrade</filename>
<filename>Talent</filename>
</owner>
</owners>

需求是这样的,我会传入文件名
比如:looting和talent2个文件名
然后去搜索所有xml的节点的文本信息
如果搜索到了,就返回上一个节点值。

例子:传入looting,talent2个文件名
之后返回jack和talent2个name值。。。。
求完整代码。。。小弟想了很多版本都没能实现。。。求指教
...全文
82 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel_su 2012-04-16
  • 打赏
  • 举报
回复
看看手册,内建就有几个解析html/xml模块,或者试试第三方模块BeautifulSoup,蛮好用的,代码类似:

from bs4 import BeautifulSoup

soup = BeautifulSoup('owners.xml')
files = ['looting', 'talent']
results = soup.find_all(text=lambda s: s.lower() in files)
names = [each.find_parent('owner')['name'] for each in results]
libralibra 2012-04-15
  • 打赏
  • 举报
回复
s = '''<owners>
<owner name="jack">
<filename>looting</filename>
<filename>RaceConfig</filename>
</owner>

<owner name="rose">
<filename>NBACourt</filename>
<filename>StreetCourt</filename>
</owner>

<owner name="mike">
<filename>ControlGrade</filename>
<filename>Talent</filename>
</owner>
</owners>'''

import re,string
res = r'<owner name=\"(.*?)\"(.*?)<\/owner>'
m = re.findall(res,s,re.S)

fname = raw_input("Please input the file name<ENTER for exit>: ")

while len(fname.strip())>0:
for item in m:
if string.lower(fname.strip()) in string.lower(item[1].strip()):
print "Input:",fname,"Name:",item[0]
break
fname = raw_input("Please input the file name<ENTER for exit>: ")


结果
>>> 
Input: looting Name: jack
Input: talent Name: mike
>>>

37,741

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧