python于lxml应用
2023-09-11 14:21:00 时间
首先下载lxml, http://www.lfd.uci.edu/~gohlke/pythonlibs/ ,然后加入引用
from
lxml
import _elementpath
as
DONTUSE
from
lxml
import etree
详细演示样例:
1.加入命名空间
#set namespace
nsmap = {"xsi":
"http://www.w3.org/2001/XMLSchema-instance"
}
g_statisticsRoot = etree.Element("DcmStatistics",
nsmap = nsmap)
2.加入xml schema引用
#add xsd reference
g_statisticsRoot.set("{http://www.w3.org/2001/XMLSchema-instance}noNamespaceSchemaLocation",
"DcmStatistics.xsd"
)
3.加入凝视
#add comment。 利用addprevious加入到根节点的前面
comment = etree.Comment("create by jiangong.li")
g_statisticsRoot.addprevious(comment)
4.尝试多种编码来解析xml
def
decodingXml(xmlFile):
tree = None
encoding =
"utf-8"
while(True):
try:
parser = etree.XMLParser(remove_blank_text=
True, encoding=encoding, remove_comments =
False)
tree = etree.parse(xmlFile, parser)
except
Exception
as
e:
if
(encoding !=
"gb18030"):
encoding =
"gb18030"
continue
else:
print(
"\nPAR XML ERROR, decoding error."
)
break
break
return
tree
5.遍历xml下的全部子节点,不止直属第一级子节点.
iter()
for
element
in
root.iter():
element.tail
=
None
6.遍历xml下的第一级子节点.
iterchildren()
for
e
in srcParentNode.iterchildren():
if
e
is srcParentNode:
continue
name =
""
#statistics node
if e.tag ==
"element":
name =
"Element"
elif
e.tag ==
"sequence":
name =
"Sequence"
elif
e.tag ==
"item":
name =
"Item"
else:
print(
"\nUnsupported element type: %s\n"
%(e.tag))
name = e.tag
# Only parse element/sequence/item
continue
7.加入子节点到尾部.
append()
def
getXmlElement(nodeName, parentNode):
if
parentNode == None:
raise
Exception(
"parent node is None")
nodes = parentNode.xpath(
'./'+nodeName)
if
len(nodes) == 0:
node = etree.Element(nodeName)
parentNode.append(node)
return
node
else:
return
nodes[0]
8.格式化成str输出
etree.tostring(g_statisticsRoot, encoding=
"UTF-8", xml_declaration=True
, pretty_print=True, with_comments=True
)
9.保存成xml文件
statisticsResult = open(g_xmlName,
"bw+")
statisticsResult.write(etree.tostring(g_statisticsRoot, encoding=
"UTF-8", xml_declaration=True,
pretty_print=True
, with_comments=True))
statisticsResult.flush()
statisticsResult.close()
版权声明:本文博主原创文章,欢迎转载,请只签名
相关文章
- python应用-一组数的最大值,最小值,平均数
- python的dict,set,list,tuple应用详解
- 【Python五篇慢慢弹(4)】模块异常谈python
- python: easyocr的安装和使用(easyocr 1.6.2 / Python 3.7.15 )
- Python使用命令创建Django3.2.9项目及应用
- Windows 环境下 Python 环境安装
- 华为OD机试 - 过滤组合字符串(Java & JS & Python)
- Python编程:利用python编程实现对基于时间序列的数据(dataframe格式)按照指定时间范围进行单方向关联,不存在的日期补充为默认的NaN
- Python语言学习:Python语言学习之python包/库package的简介(模块的封装/模块路径搜索/模块导入方法/自定义导入模块实现华氏-摄氏温度转换案例应用)、使用方法、管理工具之详细攻略
- ML之FE:MIC(Maximal Information Coefficient)最大互信息系数的简介、应用(python代码实现)之详细攻略
- Python:利用python编程将上海十六区,2020年5月份房价实时地图(数据来源房天下)进行柱状图、热图可视化
- Python语言学习:Python语言学习之python包/库package的简介(模块的封装/模块路径搜索/模块导入方法/自定义导入模块实现华氏-摄氏温度转换案例应用)、使用方法、管理工具之详细攻略
- Python编程语言学习:python中浅复制/深复制(或浅拷贝/深拷贝)的简介、案例应用注意事项之详细攻略
- Python语言学习:利用python获取当前/上级/上上级目录路径(获取路径下的最后叶目录的文件名、合并两个不同路径下图片文件名等目录/路径案例、正确加载图片路径)之详细攻略
- Python:python代码编程带你玩转双色球(了解双色球的概率逻辑)
- Python编程语言学习:python中与数字相关的函数(取整等)、案例应用之详细攻略
- Python语言学习之字母L开头函数使用集锦:logging日志用法之详细攻略
- Python之多线程:python多线程设计之同时执行多个函数命令详细攻略
- Python之ffmpeg-python:ffmpeg-python库的简介、安装、使用方法之详细攻略
- 文科生学Python:我卸载又安装过三次Anaconda | 观察
- 〖Python 数据库开发实战 - MySQL篇⑱〗- 分组查询的应用
- python将视频分段处理
- python moviepy 特效编辑
- Python实现决策树回归模型(DecisionTreeRegressor算法)并应用网格搜索算法调优项目实战
- 理解 Python 装饰器看这一篇就够了
- 【LeetCode Python实现】386. 字典序排数(中等)
- 雅虎财经数据python 网络爬虫stock股票 用 Python 通过雅虎财经获取股票数据
- 还在为兼容性测试发愁?让我们用Python来轻松完成吧
- python基础===jieba模块,Python 中文分词组件
- Python编程语言学习:python中浅复制/深复制(或浅拷贝/深拷贝)的简介、案例应用注意事项之详细攻略
- 〖Python自动化办公篇⑳〗 - python实现邮件自动化 - 发送html邮件和带附件的邮件
- python零基础学编程:Python是什么?为什么Python这么火,学Python能干什么?
- opencv-python 开发环境的安装、配置
- 第17讲:Python中元组的概念以及应用