Python xml 读取之 ET.parse

2023-11-07

Python xml 读取之 ET.parse

前一篇写到了xml 读取方法(一)dom.minidom,本次再介绍一种方法:ET.parse。

常用操作:
tree = ET.parse(xml_path)
root = tree.getroot() # 获取根节点
node.tag # 获取节点名字,string
node…attrib # 获取节点全部属性,dict
要想遍历某一层节点下的子节点,貌似只可以一层一层,从根节点开始,慢慢遍历:
xml文件用上一篇的xml即可,写了小段实际操作代码 如下:

def xml_read(content):
    tree = ET.parse('../../../../androidmanifest.xml')
    root = tree.getroot()
    for child in root:
        if child.tag == 'application':
            for child1 in child:
                if child1.tag == 'activity':
                    for key, value in child1.attrib.items():
                        if value == content:
                            str_tag = ''
                            str_attrib = ''
                            for inter_child in child1:
                                if inter_child.tag == 'intent-filter':
                                    for child2 in inter_child:
                                        str_tag += child2.tag + '|'
                                        for key, value in child2.attrib.items():
                                            str_attrib += value + '|'
                                if 'action' in str_tag and 'category' in str_tag and len(inter_child) == 2 and 'android.intent.action.MAIN' in str_attrib and 'android.intent.category.LAUNCHER' in str_attrib:
                                    return True
                                else:
                                    return False
代码的主要意思就是:
1.先通过根节点获取application节点,再在application中遍历tag名称为activity的标签
2.获取activity节点的属性,,若其中有和content相同的话,那么我们继续遍历activity节下的子节点(跳到步骤3),如果没有和content相同的话,就不用理会;
3. 先判断有没有intent-filter节点,没有则后面判读会失败,如果有,则继续遍历intent-filter下所有节点中是不是有action和category,如果有,则继续判断这两个标签的属性值,是不是和下面的if条件中符合,符合则返回结果为true,不符合或者没有action\category其中任意一个子节点的话,都是返回false。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python xml 读取之 ET.parse 的相关文章

随机推荐

  • UE4_异步_数据处理(Json)

    如果一个数字城市demo 需要将第三方海量的数据进行处理展示 将数据的处理放在GameThread 上显然是不合理 这个时候需要用多线程解析数据 防止游戏线程的阻塞 关于异步和多线程 前两天面试被别人问到一个问题 异步和多线程的区别 面试的
  • 代码静态测试工具

    Ounec5 0 扫描语言VB C C C Java 属于付费工具 Coverity Prevent 扫描语言有C C C Java 属于付费工具 Stake SmartRiskAnalyzer 扫描语言C C Java 属于付费工具 Ra
  • 【缓存】一种新的缓存 Caffeine Cach 介绍

    1 概述 转载 真正的缓存之王 Google Guava 只是弟弟 Guava Cache 他的优点是封装了get put操作 提供线程安全的缓存操作 提供过期策略 提供回收策略 缓存监控 当缓存的数据超过最大值时 使用LRU算法替换 这一
  • upload-labs通关秘籍和安装环境

    upload labs通关 一 什么是upload labs 二 漏洞 三 安装环境 四 小试牛刀 第一关 pass 01 客户端检测绕过 js检测 第二关 pass 02 content type 服务器端检测 MIME 类型 第三关 上
  • element-ui组件学习

    element ui组件的大致分类 element ui的组件大致分为以下几类 Basic Form Data Notice Navigation Other 组件分类的大致意思 basic组件类型 是一些关于页面布局 按钮和icon等相关
  • 后台数据转换成json数组字符串到前端方法

    1 将结果集ResultSet转化为List集合 对结果集转换成list集合 public List
  • window丢失msvcp90.dll怎么办

    今天在使用py2exe生成编译的时候出现了 No such file or directory msvcp90 dll 下面是解决的方法 1 首先把msvcp90 dll下载到本机 这个就要去网上自己找一下了 2 将下载好的 msvcp90
  • 界面组件Qt Widgets入门指南,让跨平台嵌入式界面开发更简单!

    Qt 是目前最先进 最完整的跨平台C 开发工具 它不仅完全实现了一次编写 所有平台无差别运行 更提供了几乎所有开发过程中需要用到的工具 如今 Qt已被运用于超过70个行业 数千家企业 支持数百万设备及应用 点击获取Qt Widget组件下载
  • php编译问题Cannot find OpenSSL's evp.h

    在php redis的遇到 Cannot find OpenSSL s
  • 树的遍历方式

    树的三种遍历 一棵树的三种遍历方式 先序遍历 中序遍历 后序遍历 前中后三种顺序其实指的是根的顺序 具体看后文 先序遍历 访问顺序 1 根节点 2 左子树 3 右子树 这里根节点是最优先级 因为是先序 根节点放最前 1 中序遍历 访问顺序
  • CSRF 漏洞原理详解及防御方法

    跨站请求伪造 攻击者可以劫持其他用户进行的一些请求 利用用户身份进行恶意操作 例如 请求http x com del php id 1 是一个删除ID为1的账号 但是只有管理员才可以操作 如果攻击者把这个页面嵌套到其他网站中 img src
  • 各种操作系统支持的磁盘格式对比

    各种操作系统支持的磁盘格式对比 操作系统 支持的磁盘格式 Windows FAT32 exFAT NTFS macOS HFS APFS Linux EXT2 EXT3 EXT4 XFS Btrfs BSD UFS Solaris ZFS
  • MacOS搭建Flutter 环境

    流程 第一步 官网下载对应版本的flutter SDK MacOS有两个版本 x64和 arm64 查看命令 uname a 官网链接 Flutter SDK archive Flutter 下载成功后会自动解压 把Flutter文件放到自
  • 【4】Docker容器相关命令

    1 查看 容器 1 查看正在运行的容器 docker ps 2 查看所有容器 包括 运行中的容器 和 没有运行的容器 docker ps a a 是 all 缩写 3 查看最后一次运行的容器 docker ps l l 是 last 的缩写
  • easyexcel功能扩展:读取excel日期格式(包括日期格式和文本格式)

    实体类属性 ExcelProperty value 时间 index 11 private String time 调用DateUtil DateUtil setParams yyyy MM dd yyyy MM dd DateUtil f
  • 两台计算机如何组成局域网,教你两台电脑如何建立局域网,win10系统为例

    虽然我们可以通过第三方的工具来传输文件 但是如果我们的电脑无法上网怎么办 想要两台电脑建立局域网发送大文件怎么操作呢 今天就这个两台电脑建立局域网的方法给大家讲解一下 希望可以帮助到有需要的朋友们 两台电脑建立局域网步骤 1 点击网络图标
  • 2.1 zio入门——把函数作用作为工作蓝图

    ZIO标准库的核心数据类型是ZIO R E A 这种类型的值被称为函数式作用 函数式作用是并发工作流的一种蓝图 如图1所示 该蓝图本质上是纯描述性的 必须执行才能观察到任何副作用 例如与数据库的交互 日志记录 流传输 网络中的数据 或接受请
  • js MediaSource h264

    https stackoverflow com questions 24102075 mediasource error this sourcebuffer has been removed from the parent media so
  • Topaz DeNoise AI for Mac(AI智能图像降噪工具)

    Topaz DeNoise AI for Mac是最好用的AI智能图像降噪工具 DeNoise AI通过消除噪点的同时恢复原始图像细节 帮助您获得100 的最佳质量 Topaz DeNoise AI for Mac AI智能图像降噪工具
  • Python xml 读取之 ET.parse

    Python xml 读取之 ET parse 前一篇写到了xml 读取方法 一 dom minidom 本次再介绍一种方法 ET parse 常用操作 tree ET parse xml path root tree getroot 获取