如何使用python元素在XML中搜索文本并提取它所属的整个节点

2024-10-02 18:24:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到的是:

我知道“12345”在整个xml中都存在,但是在不同的节点下。我想搜索“12345”并提取它所属的节点块。所以这里,“12345”在“Rating”下,但在xml的其他地方它在“Description”下。你知道吗

下面的代码只搜索评级,但如何搜索“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)


Tags: inforif节点valuexmldetailsmedia
1条回答
网友
1楼 · 发布于 2024-10-02 18:24:57

我用这个来获取我需要的信息。你知道吗

示例查询返回父节点,其中子元素akey=12345

query是与该查询匹配的所有父元素

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

相关问题 更多 >