python中lxml的应用
来源:互联网 发布:如何在手机淘宝买东西 编辑:程序博客网 时间:2024/04/28 00:41
首先下载lxml, http://www.lfd.uci.edu/~gohlke/pythonlibs/ ,然后添加引用
fromlxml import _elementpathasDONTUSE
fromlxml 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
defdecodingXml(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)
exceptExceptionase:
if(encoding !="gb18030"):
encoding ="gb18030"
continue
else:
print("\nPAR XML ERROR, decoding error.")
break
break
returntree
5.遍历xml下的所有子节点,不止直属第一级子节点.iter()
forelementinroot.iter():
element.tail=None
6.遍历xml下的第一级子节点.iterchildren()
fore in srcParentNode.iterchildren():
ife is srcParentNode:
continue
name =""
#statistics node
if e.tag =="element":
name ="Element"
elife.tag =="sequence":
name ="Sequence"
elife.tag =="item":
name ="Item"
else:
print("\nUnsupported element type: %s\n"%(e.tag))
name = e.tag
# Only parse element/sequence/item
continue
7.添加子节点到尾部. append()
defgetXmlElement(nodeName, parentNode):
ifparentNode == None:
raiseException("parent node is None")
nodes = parentNode.xpath('./'+nodeName)
iflen(nodes) == 0:
node = etree.Element(nodeName)
parentNode.append(node)
returnnode
else:
returnnodes[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()
2 0
- python中lxml的应用
- lxml, python的lxml工具箱
- Python中lxml模块的安装
- Python中lxml模块的安装
- python中lxml包的安装方法
- Python中lxml库的用法
- Python中lxml模块的安装
- Python中安装lxml
- python-lxml的demo
- python中lxml使用方式
- Python中lxml库的安装(Windows平台)
- Python中lxml模块的安装(Ubuntu下)
- python爬虫-lxml的使用
- Python-lxml
- python virtualenv 中安装lxml 外部依赖
- python中lxml模块生成xml文件
- python网络爬虫系列教程——python中lxml库应用全解(xpath表达式)
- Linux下python lxml模块的安装
- Android支付接入(一):支付宝
- 使用内部类广播的时候出现的问题
- Data modeling essentials
- UISearchBar 完美自定义,适配6.0、7.0、7.1
- ASP.NET MVC中Filter使用
- python中lxml的应用
- JAVA static关键字
- Android支付接入(二):移动游戏基地
- secureCRT上传、下载文件
- 员工价值
- 类簇的定义
- Android支付接入(三):电信爱游戏支付
- log4j输出多个自定义日志文件,动态配置路径
- Oracle 临时表用法