You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python循环匹配XML指定节点后获取其后节点的enabled属性

修改代码获取匹配节点的下一个LinearLayout节点的enabled属性

问题分析

你的原代码能找到指定text的节点,但错误返回了该节点自身的enabled属性,而你需要的是该节点之后的android.widget.LinearLayout节点的enabled值;同时原代码存在属性值类型判断错误——XML属性值是字符串,不能直接和布尔值True比较。

修改后的代码

from xml.dom import minidom

def checktap(text):
    dom = minidom.parse("file.xml")
    nodes = dom.getElementsByTagName("node")
    for idx, node in enumerate(nodes):
        if node.getAttribute("text") == text:
            # 检查是否存在下一个节点
            if idx + 1 < len(nodes):
                target_node = nodes[idx + 1]
                # 验证目标节点是否为android.widget.LinearLayout
                if target_node.getAttribute("class") == "android.widget.LinearLayout":
                    enabled_val = target_node.getAttribute("enabled")
                    # XML属性值为字符串,需比较小写的"true"/"false"
                    return "Yes" if enabled_val.lower() == "true" else "No"
            # 未找到符合要求的下一个节点时返回提示
            return "Target next node not found"
    # 未找到匹配text的节点时返回提示
    return "Text matching node not found"

value = checktap("EU 39")
print(value)

关键修改点

  • 获取下一个节点:通过遍历节点列表的索引idx,直接取nodes[idx+1]获取当前匹配节点的下一个节点(getElementsByTagName返回的节点列表按XML中的顺序排列)。
  • 节点类型验证:增加对目标节点class属性的判断,确保获取的是android.widget.LinearLayout类型的节点。
  • 属性值判断修正:XML中enabled属性的值是字符串类型(如"true"或"false"),改为比较小写后的字符串,避免大小写问题。
  • 边界情况处理:补充了匹配节点是最后一个节点、未找到目标类型节点、未找到匹配text节点的提示返回逻辑。

内容的提问来源于stack exchange,提问作者user12503028

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 04:09:17