Android开发

遍历指定目录生成查找xml文件,输出XML内textView节点

2025-02-07  本文已影响0人  Young岛主

遍历指定目录生成查找xml文件,输出XML内textView节点没有textsize节点
Python 脚本实现

import os
import xml.etree.ElementTree as ET

def find_textviews_without_textsize(xml_file):
    try:
        tree = ET.parse(xml_file)
        root = tree.getroot()
        textviews_without_textsize = []
        for elem in root.findall('.//*[@class="android.widget.TextView"]'):
            if 'textSize' not in elem.attrib:
                textviews_without_textsize.append(elem)
        return textviews_without_textsize
    except Exception as e:
        print(f"解析 {xml_file} 时出错: {e}")
        return []

def traverse_directory(directory):
    for root_dir, _, files in os.walk(directory):
        for file in files:
            if file.endswith('.xml'):
                xml_file = os.path.join(root_dir, file)
                result = find_textviews_without_textsize(xml_file)
                if result:
                    print(f"在文件 {xml_file} 中找到 {len(result)} 个没有 textsize 属性的 TextView 节点:")
                    for textview in result:
                        print(f"  - 节点属性: {textview.attrib}")

if __name__ == "__main__":
    import sys
    if len(sys.argv) != 2:
        print("用法: python script.py <目录路径>")
        sys.exit(1)
    target_dir = sys.argv[1]
    if not os.path.isdir(target_dir):
        print(f"{target_dir} 不是有效的目录。")
        sys.exit(1)
    traverse_directory(target_dir)

代码解释
1.find_textviews_without_textsize函数 :该函数接收一个 XML 文件路径作为输入,尝试解析该 XML 文件。使用 findall 方法查找所有 class 属性为 android.widget.TextView 的节点,然后筛选出没有 textSize 属性的节点并返回。
2.traverse_directory函数 :此函数接收一个目录路径,使用 os.walk 递归遍历该目录及其子目录下的所有文件。对于每个以 .xml 结尾的文件,调用 find_textviews_without_textsize 函数进行检查。如果找到符合条件的节点,则输出相关信息。
3.主程序:检查命令行参数,确保用户提供了一个有效的目录路径。如果路径无效,输出错误信息并退出程序;否则,调用 traverse_directory 函数开始遍历目录。

上一篇 下一篇

猜你喜欢

热点阅读