
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 >的内容能给输出出来。 展开
<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 >的内容能给输出出来。 展开
3个回答
展开全部
你这个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()
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()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
假设这个文件为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!'
###### 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!'
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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>
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>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询