使用 Xpath 获取 XML 的节点,这些节点在其中一个属性中包含特定的单词

get the nodes of XML with Xpath that contain a particular word in one of the attributes

以下示例来自对现有问题的一个很好的回答。 我想进一步细化这个问题: selecting attribute values from lxml

有了这个 XML,我想要节点的特定节点属性包含一个字符串

<?xml version ="1.0" encoding="UTF-8"?>
    <level1>
      <level2 first_att='att1.fff.tre' second_att='foo'><name>A</name><age>8</age></level2>
      <level2 first_att='att2.ert.wer' second_att='bar'><name>B</name><age>9</age></level2>
      <level2 first_att='att2.fff.wer' second_att='bar'><name>C</name><age>10</age></level2>
      <level2 first_att='att2.ert.wer' second_att='bar'><name>D</name><age>11</age></level2>
    </level1>

可以通过以下方式访问属性 'bar':

import lxml.etree as etree
tree = etree.parse("test_file.xml")
print tree.xpath("//level1/level2[@first_att='att1.fff.tre']/@second_att")[0]

如果我想在任何地方获取 first_att 包含 'fff' 的节点怎么办? (示例中的第一个和第三个节点。

最终目的是获取字典来填充 pandas 数据框。

[{'name':'A','age':8},{'name':'B','age':10}]

谢谢

如果您不想检查整个属性值,而只是检查一部分,请尝试替换 predicate

[@first_att='att1.fff.tre']

[contains(@first_att, 'fff')]