如何在Python中使用lxml获取以下元素?

预洗

我有下一个XML文件:

<separator colspan="4" string="Application"/>
<field name="sel_groups_9_28_10" modifiers="{}"/>
<newline/>
<field name="sel_groups_49_50" modifiers="{}"/>
<newline/>
<field name="sel_groups_68" modifiers="{}"/>
<newline/>
<field name="sel_groups_36_37" modifiers="{}"/>
<newline/>
<field name="sel_groups_21_22_23" modifiers="{}"/>
<newline/>
<field name="sel_groups_43_44" modifiers="{}"/>
<newline/>
<field name="sel_groups_5_57_58" modifiers="{}"/>
<newline/>
<field name="sel_groups_59_60" modifiers="{}"/>
<newline/>
<field name="sel_groups_61_62" modifiers="{}"/>
<newline/>
<field name="sel_groups_19" modifiers="{}"/>
<newline/>
<field name="sel_groups_3_4" modifiers="{}"/>
<newline/>
<separator colspan="4" string="MY GROUP"/>
<field name="in_group_144" modifiers="{}"/>
<field name="in_group_142" modifiers="{}"/>
<field name="in_group_148" modifiers="{}"/>
<field name="in_group_147" modifiers="{}"/>
<field name="in_group_146" modifiers="{}"/>
<field name="in_group_145" modifiers="{}"/>
<field name="in_group_141" modifiers="{}"/>
<field name="in_group_143" modifiers="{}"/>
<separator colspan="4" string="Technical configuration"/>
<field name="in_group_30" modifiers="{}"/>
<field name="in_group_46" modifiers="{}"/>
<field name="in_group_12" modifiers="{}"/>
<field name="in_group_45" modifiers="{}"/>
<field name="in_group_33" modifiers="{}"/>
<field name="in_group_66" modifiers="{}"/>
<field name="in_group_25" modifiers="{}"/>
<field name="in_group_32" modifiers="{}"/>

该树的常见结构是:

<separator 1/>
<field 1/>
<field 2/>
<field N/>
<separator 2/>
<field 1/>
<field 2/>
<field N/>
<separator N/>
<field 1/>
<field 2/>
<field N/>

我想要的是获取其字符串与MY GROUP以及以下所有字段不同的分隔符,直到下一个分隔符为止(我的目的是使除分隔符MY GROUP和字段in_group_144in_group_142in_group_148in_group_147之外的每个元素不可见in_group_146in_group_145in_group_141in_group_143)。

XML树将更改其字段名称,因此按名称获取字段将不是解决方案。

在这里lxml / Python:获取先前的兄弟姐妹给出了如何获取先前的兄弟姐妹,但是我如何才能有效地获取标签为分隔符的先前的兄弟姐妹呢?

我当前的解决方案:

def get_previous_separator(self, element):
    previous_element = element.getprevious()
    if previous_element.tag == 'separator':
        return previous_element
    else:
        return get_previous_separator(element)

for element in tree:
    if self.get_previous_separator(element).string != 'MY GROUP':
        MAKE ELEMENT INVISIBLE

有什么方法比递归方法更直接地管理目标?

har07

您可以使用简单的XPath来separator从current中获取最近的在前的同级元素element

element.xpath('preceding-sibling::separator[1]')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Python中使用lxml获取以下元素?

来自分类Dev

如何在可按下元素中使用ifelse逻辑

来自分类Dev

使用jQuery选择以下元素

来自分类Dev

如何获取numpy数组中``对角线''以下元素的索引

来自分类Dev

如何使用以下元素在硒中定位元素?

来自分类Dev

如何在给定的字符串中打印以下元素?

来自分类Dev

如何在Python中使用LXML捕获XML文件的所有元素名称?

来自分类Dev

如何在Python中使用LXML捕获XML文件的所有元素名称?

来自分类Dev

python lxml - 如何在 XML 中获取子元素的值

来自分类Dev

无法使用id,Xpath,linkText查找以下元素

来自分类Dev

标签被以下元素溢出

来自分类Dev

如何使用Python从lxml元素获取原始文本

来自分类Dev

如何在python中使用selenium获取元素相对于canvas元素的位置?

来自分类Dev

访问以下元素中的元素

来自分类Dev

删除以下元素的元素值

来自分类Dev

根据列表中的以下元素获取第一个元素的范围

来自分类Dev

使用lxml和python查找子xml元素后如何获取父xml元素

来自分类Dev

如何在python中使用minidom获取元素值并将其存储到列表中?

来自分类Dev

如何在Python中使用Selenium WebDriver获取元素的CSS值(例如颜色)

来自分类Dev

为什么以下元素不旋转?

来自分类Dev

数组CUDA中以下元素的总和

来自分类Dev

CSS :after 被以下元素按下

来自分类Dev

如何在PHP中使用$ _POST获取选择元素值

来自分类Dev

如何在PHP中使用数组获取值元素[@attributes]

来自分类Dev

如何在jQuery中使用类选择以下所有元素

来自分类Dev

如果以下元素为空,如何隐藏类中的项目

来自分类Dev

如何在RestClient中使用以下方法获取重定向URL

来自分类Dev

如何在Delphi 10中使用http组件获取Instagram以下列表

来自分类Dev

如何在RestClient中使用以下方法获取重定向URL

Related 相关文章

  1. 1

    如何在Python中使用lxml获取以下元素?

  2. 2

    如何在可按下元素中使用ifelse逻辑

  3. 3

    使用jQuery选择以下元素

  4. 4

    如何获取numpy数组中``对角线''以下元素的索引

  5. 5

    如何使用以下元素在硒中定位元素?

  6. 6

    如何在给定的字符串中打印以下元素?

  7. 7

    如何在Python中使用LXML捕获XML文件的所有元素名称?

  8. 8

    如何在Python中使用LXML捕获XML文件的所有元素名称?

  9. 9

    python lxml - 如何在 XML 中获取子元素的值

  10. 10

    无法使用id,Xpath,linkText查找以下元素

  11. 11

    标签被以下元素溢出

  12. 12

    如何使用Python从lxml元素获取原始文本

  13. 13

    如何在python中使用selenium获取元素相对于canvas元素的位置?

  14. 14

    访问以下元素中的元素

  15. 15

    删除以下元素的元素值

  16. 16

    根据列表中的以下元素获取第一个元素的范围

  17. 17

    使用lxml和python查找子xml元素后如何获取父xml元素

  18. 18

    如何在python中使用minidom获取元素值并将其存储到列表中?

  19. 19

    如何在Python中使用Selenium WebDriver获取元素的CSS值(例如颜色)

  20. 20

    为什么以下元素不旋转?

  21. 21

    数组CUDA中以下元素的总和

  22. 22

    CSS :after 被以下元素按下

  23. 23

    如何在PHP中使用$ _POST获取选择元素值

  24. 24

    如何在PHP中使用数组获取值元素[@attributes]

  25. 25

    如何在jQuery中使用类选择以下所有元素

  26. 26

    如果以下元素为空,如何隐藏类中的项目

  27. 27

    如何在RestClient中使用以下方法获取重定向URL

  28. 28

    如何在Delphi 10中使用http组件获取Instagram以下列表

  29. 29

    如何在RestClient中使用以下方法获取重定向URL

热门标签

归档