python使用xml布局界面_Python:使用ElementTree更新XML文件,同时尽可能地保留布局...
基于XML的解决方案是为ElementTree编写一个helper类,该类:在解析为ElementTree之前在抓取XML声明行在写入时,如果不同时写入编码属性(我检查了源代码),则无法写入XML声明行。
解析输入文件一次,获取根元素的命名空间。向ElementTree注册该命名空间,将空字符串作为前缀。完成后,使用ElementTree再次使用该新设置分析源文件。
它有一个主要缺点:XML注释丢失。我了解到,对于这种情况,这是不可接受的(我最初认为输入数据没有任何注释,但事实证明它有)。
我的助手类示例:from xml.etree import ElementTree as ET
import re
class ElementTreeHelper():
def __init__(self, xml_file_name):
xml_file = open(xml_file_name, "rb")
self.__parse_xml_declaration(xml_file)
self.element_tree = ET.parse(xml_file)
xml_file.seek(0)
root_tag_namespace = self.__root_tag_namespace(self.element_tree)
self.namespace = None
if root_tag_namespace is not None:
self.namespace = '{' + root_tag_namespace + '}'
# Register the root tag namespace as having an empty prefix, as
# this has to be done before parsing xml_file we re-parse.
ET.register_namespace('', root_tag_namespace)
self.element_tree = ET.parse(xml_file)
def find(self, xpath_query):
return self.element_tree.find(xpath_query)
def write(self, xml_file_name):
xml_file = open(xml_file_name, "wb")
if self.xml_declaration_line is not None:
xml_file.write(self.xml_declaration_line + '\n')
return self.element_tree.write(xml_file)
def __parse_xml_declaration(self, xml_file):
first_line = xml_file.readline().strip()
if first_line.startswith('<?xml ') and first_line.endswith('?>'):
self.xml_declaration_line = first_line
else:
self.xml_declaration_line = None
xml_file.seek(0)
def __root_tag_namespace(self, element_tree):
namespace_search = re.search('^{(\S+)}', element_tree.getroot().tag)
if namespace_search is not None:
return namespace_search.group(1)
else:
return None
def __main():
el_tree_hlp = ElementTreeHelper('houses.xml')
dogs_tag = el_tree_hlp.element_tree.getroot().find(
'{ns}house/{ns}dogs'.format(
ns=el_tree_hlp.namespace))
one_dog_added = int(dogs_tag.text.strip()) + 1
dogs_tag.text = str(one_dog_added)
el_tree_hlp.write('hejsan.xml')
if __name__ == '__main__':
__main()
输出:<?xml version="1.0"?>
2821
3
如果有人对此解决方案有改进,请毫不犹豫地获取代码并加以改进。
python使用xml布局界面_Python:使用ElementTree更新XML文件,同时尽可能地保留布局...相关推荐
- python发牌游戏图形界面_python实现扑克牌交互式界面发牌程序
本文实例为大家分享了python实现扑克牌交互式界面发牌程序的具体代码,供大家参考,具体内容如下 注:图片自行在网上下载.替换即可 #coding=utf-8 class Card(): #扑克牌类 ...
- 用 Python 制作可视化 GUI 界面,一键实现自动分类管理文件!
作者 | 欣一 来源 | Python爱好者集中营 经常杂乱无章的文件夹会让我们找不到所想要的文件,因此小编特意制作了一个可视化GUI界面,通过输入路径一键点击实现文件分门别类的归档. 不同的文件后缀 ...
- python制作图形化界面_python图形化界面设计(wxpython)一布局管理
本篇内容来自https://www.cnblogs.com/-wenli/p/12149850.html 1.布局分析和注意点 例程主要是Sizer布局应用.wx.BoxSizer的布局方向分为横向和 ...
- python制作qq登录界面_Python制作一个仿QQ办公版的图形登录界面
最近,QQ的办公版本--TIM进行了一次更新升级.本次更新升级大幅修改了界面的样式,看起来更加的清爽.简洁和高效了. 这种界面州的先生还是比较喜欢的,没有QQ那么花里胡哨,也比微信那些残缺的功能更加丰 ...
- python程序如何做界面_python是如何写界面程序的?
展开全部 python做界面2113还是用PYQT吧 PYQT支持PY2和PY3 wxpython仅仅支5261持PY2 而python自带的4102tkinter实在是很难1653弄#!/usr/b ...
- python编辑用户登录界面_python编辑用户登入界面的实现代码
1.需求分析 登入界面需要达到以下要求: 系统要有登入和注册两个选项可供选择 系统要能够实现登入出错提示,比如账户密码错误等,用户信息保存在user_info.txt文件夹中 系统要能够进行登入错误次 ...
- python实现监控数据界面_python 监控界面
MySQL MTOP - 开源 MySQL 企业监控系统 MySQLMTOP是一个由Python+PHP开发的MySQL企业级监控系统.系统由Python实现多进程数据采集和告警,PHP实现WEB展示 ...
- python实现qq登录界面_Python实现QQ界面
Python实现QQ界面(好友列表,通信部分还未做好,没时间~~嘻嘻) 项目环境: (1)OS:Linux RedHat6.3 (2)Language:Python (3)Lib:pygtk,gtk ...
- python如何进入编程界面_Python可视化界面编程入门
Python可视化界面编程入门具体实现代码如所示: (1)普通可视化界面编程代码入门: import sys from PyQt5.QtWidgets import QWidget,QApplicat ...
最新文章
- Angular应用开发中遇到的问题
- Tomcat5+Mssql server 2000数据库连接池配置
- unity editor下选中GameObject粘贴复制pos信息
- Linux修改终端提示符
- 项目管理: 软件质量的可靠保证
- Linux系统编程(18)——正则表达式实用举例
- NotePad++常用快捷键。——Arvin
- linux把 root文件夹删除文件,在Linux下删除顽固文件和目录
- linux显卡驱动与opengl,NVIDIA率先发布OpenGL 3.0 Linux驱动
- Uva 11584 线性DP
- Android项目迁移到Androidx经验总结
- 这不是结束,而是另一次重逢的开始
- 旅游商城会员中心HTML,旅游特产商城功能_旅游特产商城系统-思途旅游CMS
- python爬取京东评论怎么翻页_爬取京东网页评论(动态网页)
- 图解三次握手与四次挥手
- .NET类比学JAVA之访问SqlServer数据库
- 爬虫实战——豆瓣电影Top250
- Windows安装MySQL以及解决.dll文件缺失问题
- 12306登录python_Python模拟登录12306
- 会议OA(待开会议所有会议)
热门文章
- 为什么Fiori客户主数据的头像在异步模式下取不回来
- 什么是SAP Commerce Cloud OCC
- SAP UI5里xml fragment getContent方法的实现
- linux weblogic 引用antlr.jar,Linux環境下Weblogic部署應用的一些問題
- 金士顿固态硬盘计算机如何识别,金士顿SV300 SF2281固态硬盘SSD不认盘开卡修复教程...
- python引入自己写的文件_python引入自己写的Py文件
- IDEA创建mavenWeb项目笔记
- html如何左侧固定div,详解左右宽度固定中间自适应html布局解决方案
- ubuntu 开启ssh_CS学习笔记 | 22、通过SSH开通通道
- 软件测试有没有测试大纲文档,系统测试大纲(范例).docx