我拥有的是:
我知道" 12345"存在于整个xml中,但在不同的节点下。我想搜索" 12345"并提取它所属的节点块。所以在这里," 12345"在"评级"但是xml中的其他地方是"描述"。
以下代码仅搜索评分,但如何搜索" 12345"并提取它所包含的块?
`<Rating action="set">
<details>12345</details>
<media>compact disk</media>
<region>GRE</region>
<sequence>1</sequence>
<flag>0</flag>
</Rating>`
for Rating in root.findall('.//{xmlsheading}Rating'):
value_found = False
for details in Rating.findall('.//{xmlsheading}details'):
if details.text == name:
value_found = True
break
if value_found:
print ET.tostring(Ratings)
答案 0 :(得分:0)
我用它来获取我需要的信息。
示例查询返回父节点,其中子元素 akey = 12345
查询是与该查询匹配的所有父元素
from lxml import etree
name = '12345'
tree = etree.parse('C:/Users/file.xml')
root = tree.getroot()
query = root.xpath('//ns:akey[text()="12345"]/..', namespaces={'ns': 'URN:XXX:XXXX:XXX:ADP:0001'})
for parent in query:
print "" + '\n' + parent.tag
child = parent.getchildren()
for kid in child:
p = kid.tag + " " + kid.text