Python 修改xml的值

Python 修改android dimen.xml的值

App/src/main/res/下面的目录,有values, values-sw533dp, values-sw600dp, values-685dp, values-sw800dp, values-sw941dp目录, 每个目录下都有dimen.xml文件,
但是dimen.xml对应的比例值不同:

  • 把res/values/下的dimens.xml里的所有sp改成dp。
  • 把res/values/下的dimens.xml直接复制到values-sw800dp下,数值不变。
  • 把res/values/下的dimens.xml直接复制到values-sw533dp下,数值*0.66,小数四舍五入成整数。
  • 把res/values/下的dimens.xml直接复制到values-sw600dp下,数值*0.75,小数四舍五入成整数。
  • 把res/values/下的dimens.xml直接复制到values-sw685dp下,数值*0.85,小数四舍五入成整数。
  • 把res/values/下的dimens.xml直接复制到values-sw941dp下,数值*1.15,小数四舍五入成整数。

dimens.xml的内容如下:


<resources>
    ......
    <dimen name="listview_btn_width">27dpdimen>
    <dimen name="listview_btn_height">27dpdimen>
    <dimen name="listview_checkbox_width">27dpdimen>
    <dimen name="listview_checkbox_height">27dpdimen>
    ......
resources>    

实现上面功能的Python 代码如下:

#!/usr/bin/python3

#导入xml包
import xml.etree.ElementTree as ET

#解析dimen.xml
tree = ET.parse('dimen.xml') 
root = tree.getroot() #获取根节点

tmp = 0;
scale = 0.66 #对应不同分辨率的比例
for child in root:
    text_val = int(child.text.replace('dp', ''))
    tmp = (int)(text_val * scale)
    if (tmp <= 0):
        tmp = text_val

    child.text = str(tmp) + 'dp'

tree.write('new_dimen.xml', xml_declaration=True, encoding="utf-8") 

注意: xml所有的修改都要基于根节点

关于python解析xml的更多详情请见:
https://docs.python.org/3.5/library/xml.etree.elementtree.html

你可能感兴趣的:(Python)