繁体   English   中英

通过名称中的 substring 搜索元素来检索 xml 元素值

[英]retrieving xml element value by searching the element by substring in its name

我需要通过名称中的 substring 搜索元素来检索 xml 元素值,例如。 我需要获取名称包含client的 XML 文件中所有元素的值。

我找到了一种方法如何通过属性查找带有 xpath 的元素,但我还没有找到元素名称的方法。

如果您真的在使用 lxml(您的问题同时标记为 lxml 和 elementtree),则可以在谓词中使用 xpath function contains() ...

from lxml import etree

xml = """
<doc>
    <client1>foo</client1>
    <some_client>bar</some_client>
</doc>
"""

root = etree.fromstring(xml)

for elem in root.xpath("//*[contains(name(),'client')]"):
    print(f"{elem.tag}: {elem.text}")

打印 output...

client1: foo
some_client: bar

ElementTree 仅支持有限的 xpath ,因此一种选择是使用.tag属性检查元素的名称...

import xml.etree.ElementTree as etree

xml = """
<doc>
    <client1>foo</client1>
    <some_client>bar</some_client>
</doc>
"""

root = etree.fromstring(xml)

for elem in root.iter():
    if "client" in elem.tag:
        print(f"{elem.tag}: {elem.text}")

这会产生与上面相同的打印 output。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM