# -*- coding: utf-8 -*-
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from xml.etree.ElementTree import ElementTree, Element
import xml.dom.minidom
def read_xml(in_path):
'''''读取并解析xml文件
in_path: xml路径
return: ElementTree'''
tree = ElementTree()
tree.parse(in_path)
return tree
def write_xml(tree, out_path):
'''''将xml文件写出
tree: xml树
out_path: 写出路径'''
tree.write(out_path,encoding="utf-8",xml_declaration=True )
def find_nodes(tree, path):
'''''查找某个路径匹配的所有节点
tree: xml树
path: 节点路径'''
return tree.findall( path )
def get_node_by_keyvalue(nodelist):
'''''根据属性及属性值定位符合的节点,返回节点
nodelist: 节点列表
kv_map: 匹配属性及属性值map'''
result_nodes = []
for node in nodelist:
result_nodes.append(node)
return result_nodes
def change_node_properties(nodelist, kv_map, is_delete=False):
'''''修改/增加 /删除 节点的属性及属性值
nodelist: 节点列表
kv_map:属性及属性值map'''
for node in nodelist:
for key in kv_map:
if is_delete:
if key in node.attrib:
del node.attrib[key]
else:
node.set( key, kv_map.get( key ) )
def change_node_text(nodelist, text, is_add=False, is_delete=False):
'''''改变/增加/删除一个节点的文本
nodelist:节点列表
text : 更新后的文本'''
for node in nodelist:
if is_add:
node.text += text
elif is_delete:
node.text = ""
else:
node.text = text
def create_node(tag, content):
'''''新造一个节点
tag:节点标签
property_map:属性及属性值map
content: 节点闭合标签里的文本内容
return 新节点'''
element = Element( tag)
element.text = content
return element
def add_child_node(nodelist, element):
'''''给一个节点添加子节点
nodelist: 节点列表
element: 子节点'''
for node in nodelist:
node.append( element )
def del_node_by_tagkeyvalue(nodelist, tag):
'''''同过属性及属性值定位一个节点,并删除之
nodelist: 父节点列表
tag:子节点标签
kv_map: 属性及属性值列表'''
for parent_node in nodelist:
children = parent_node.getchildren()
for child in children:
if child.tag == tag:
parent_node.remove( child )
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(421, 429)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(90, 50, 251, 41))
font = QtGui.QFont()
font.setFamily("宋体")
font.setPointSize(20)
font.setBold(True)
font.setUnderline(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setObjectName("label")
self.DIR_File = QtWidgets.QPushButton(self.centralwidget)
self.DIR_File.setGeometry(QtCore.QRect(140, 120, 151, 41))
font = QtGui.QFont()
font.setFamily("宋体")
font.setPointSize(11)
font.setBold(True)
font.setItalic(False)
font.setUnderline(False)
font.setWeight(75)
font.setStrikeOut(False)
font.setKerning(True)
self.DIR_File.setFont(font)
self.DIR_File.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
self.DIR_File.setMouseTracking(False)
self.DIR_File.setObjectName("DIR_File")
self.Add_Del = QtWidgets.QPushButton(self.centralwidget)
self.Add_Del.setGeometry(QtCore.QRect(140, 190, 151, 41))
font = QtGui.QFont()
font.setFamily("宋体")
font.setPointSize(10)
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
self.Add_Del.setFont(font)
self.Add_Del.setObjectName("Add_Del")
self.Replace = QtWidgets.QPushButton(self.centralwidget)
self.Replace.setGeometry(QtCore.QRect(140, 260, 151, 41))
font = QtGui.QFont()
font.setFamily("宋体")
font.setPointSize(10)
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
self.Replace.setFont(font)
self.Replace.setObjectName("Replace")
self.Cat = QtWidgets.QPushButton(self.centralwidget)
self.Cat.setGeometry(QtCore.QRect(140, 330, 151, 41))
font = QtGui.QFont()
font.setFamily("宋体")
font.setPointSize(10)
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
self.Cat.setFont(font)
self.Cat.setObjectName("Cat")
# MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 421, 23))
self.menubar.setObjectName("menubar")
self.menu = QtWidgets.QMenu(self.menubar)
self.menu.setObjectName("menu")
# MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
# MainWindow.setStatusBar(self.statusbar)
self.menubar.addAction(self.menu.menuAction())
self.retranslateUi(MainWindow)
self.DIR_File.clicked.connect(MainWindow.create_file)
self.Add_Del.clicked.connect(MainWindow.add_del)
self.Replace.clicked.connect(MainWindow.replace)
self.Cat.clicked.connect(MainWindow.resouce_show)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "XML文件的简单操作"))
self.DIR_File.setText(_translate("MainWindow", "XML简单文件的创建"))
self.Add_Del.setText(_translate("MainWindow", "XML节点的增加/删除"))
self.Replace.setText(_translate("MainWindow", "XML节点文本的更改"))
self.Cat.setText(_translate("MainWindow", "XML源文件的查看"))
self.menu.setTitle(_translate("MainWindow", "菜单"))
class DIR_Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(203, 316)
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(40, 30, 131, 21))
font = QtGui.QFont()
font.setFamily("新宋体")
font.setPointSize(10)
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
self.label.setFont(font)
self.label.setObjectName("label")
self.Book_Name = QtWidgets.QLabel(Form)
self.Book_Name.setGeometry(QtCore.QRect(10, 130, 54, 12))
font = QtGui.QFont()
font.setFamily("宋体")
font.setBold(True)
font.setWeight(75)
self.Book_Name.setFont(font)
self.Book_Name.setObjectName("Book_Name")
self.Book_Author = QtWidgets.QLabel(Form)
self.Book_Author.setGeometry(QtCore.QRect(10, 170, 51, 16))
font = QtGui.QFont()
font.setFamily("宋体")
font.setBold(True)
font.setWeight(75)
self.Book_Author.setFont(font)
self.Book_Author.setObjectName("Book_Author")
self.Book_Pub = QtWidgets.QLabel(Form)
self.Book_Pub.setGeometry(QtCore.QRect(10, 210,
python实现xml的简单操作
需积分: 44 185 浏览量
2018-06-27
16:04:23
上传
评论
收藏 5KB ZIP 举报
jia666666
- 粉丝: 1w+
- 资源: 33
最新资源
- Screenshot_20240427_031602.jpg
- 网页PDF_2024年04月26日 23-46-14_QQ浏览器网页保存_QQ浏览器转格式(6).docx
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈