python,给一个XML格式文件如:

<pattern><id>1</id><name>lili</name><case><condition>前有狼</condition><action>后打虎</acti... <pattern>
<id>1</id>
<name>lili</name>
<case>
<condition>前有狼</condition>
<action>后打虎</action>
</case>
</pattern>
<pattern>
<id>2</id>
<name>haha</name>
<case>
<condition>前有虎</condition>
<action>后打狼</action>
</case>
</pattern>
要求我输入一个id,比如1,能够把上面的从< pattern >到</pattern >的内容能给输出出来。
展开
 我来答
venturetest4
2012-02-28 · TA获得超过131个赞
知道答主
回答量:25
采纳率:0%
帮助的人:38.9万
展开全部
你这个xml不标准,真正的xml需要最外面有一个<aa>和</aaa>包裹着,如果是标准的,可用如下
id = 1
import xml.dom.minidom
dom = xml.dom.minidom.parse("data.xml")
for i in dom.getElementsByTagName('pattern'):
if(i.childNodes[1].firstChild.data == str(id)): print i.toxml()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
埃尔温_薛定谔
2012-02-28
知道答主
回答量:21
采纳率:0%
帮助的人:20.6万
展开全部
假设这个文件为test.xml,与以下程序(prxml.py)放在同一目录。
###### prxml.py #######
# -*- coding: utf-8 -*-
def printc(file, id):
fin = open(file)
f = fin.readlines()
switch = 0
flen = len(f)
for i in range(0, flen):
if '<pattern>' in f[i]:
if '<id>' + str(id) + '</id>' in f[i+1]:
switch = 1
continue
elif '</pattern>' in f[i]:
switch = 0
continue
if switch:
print f[i]

file = 'test.xml'
id = int(input('Please enter ID:\n'))
printc(file, id)
print 'Done!'
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9308069
2012-02-28 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:2031万
展开全部
python 3.2版

t='''
<root>
<pattern>
<id>1</id>
<name>lili</name>
<case>
<condition>前有狼</condition>
<action>后打虎</action>
</case>
</pattern>
<pattern>
<id>2</id>
<name>haha</name>
<case>
<condition>前有虎</condition>
<action>后打狼</action>
</case>
</pattern>
</root>
'''

from xml.dom.minidom import parseString
d=parseString(t)

for id in d.getElementsByTagName("id"):
if int(id.childNodes.item(0).data)==1:
print(id.parentNode.toxml())
break
===========
>>>
<pattern>
<id>1</id>
<name>lili</name>
<case>
<condition>前有狼</condition>
<action>后打虎</action>
</case>
</pattern>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式