python中lxml的应用

首先下载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中lxml的应用,布布扣,bubuko.com

时间: 2024-10-14 22:59:14

python中lxml的应用的相关文章

Python中lxml模块的安装

lxml是Python中与XML及HTML相关功能中最丰富和最容易使用的库.lxml并不是Python自带的包,而是为libxml2和libxslt库的一个Python化的绑定.它与众不同的地方是它兼顾了这些库的速度和功能完整性,以及纯Python API的简洁性,与大家熟知的ElementTree API兼容但比之更优越!但安装lxml却又有点麻烦,因为存在依赖,直接安装的话用easy_install, pip都不能成功,会报gcc错误.下面列出来Windows.Linux下面的安装方法: [

【python】lxml

来源:http://lxml.de/tutorial.html lxml是python中处理xml的一个非常强大的库,可以非常方便的解析和生成xml文件.下面的内容翻译了链接中的一部分 1.生成空xml节点 from lxml import etree root = etree.Element("root") print(etree.tostring(root, pretty_print=True)) <root/> 2.生成xml子节点 from lxml import

Python中xPath技术和BeautifulSoup的使用

xpath基本知识 XPath语法:使用路径表达式来选取XML或HTML文档中的节点或节点集 路径表达式 nodename:表示选取此节点的所有子节点 /    : 表示从根节点选取 //   :选择任意位置的某个节点.            .  :选取当前节点           ..   :选取当前节点的父节点 @   :选取属性    谓语实例 实现效果                                                                 路劲表

python中xpath的基本使用

写在前面的话 :上一篇文章我们利用requests进行了一些爬虫小实验,但是想要更顺利的深入爬虫学习,了解一些解析网页的方法肯定是必须的,所以接下来我们就一起来学习lxml.etree模块的基础使用方法吧 温馨提示 :博主使用的系统为win10,使用的python版本为3.6.5 一.XPATH简介 若想了解xpath,我们首先需要知道什么是xml文档,其实简单地说,xml文档就是由一系列节点构成的树,例如 <html> <body> <div> <p>He

走入计算机的第四十天(python中sockserver模块)

一.Python中的sockserver模块 1.该模块与sock模块不同之处是该模块自动帮我们分装好了一些功能,让我们在编程的时候直接调用这些功能就可以了,节省了编程步骤. 2.如图所示 注释:上图为服务端设置 该模块的操作方法比较死板,我们只要会熟悉的使用他就可以了.

python中if __name__ == &#39;__main__&#39;:

Using a module's __name__ Example? 8.2.? Using a module's __name__ #!/usr/bin/python # Filename: using_name.py if __name__ == '__main__': print 'This program is being run by itself' else: print 'I am being imported from another module' Output $ pytho

关于Python中的yield

关于Python中的yield http://www.cnblogs.com/tqsummer/archive/2010/12/27/1917927.html http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/ 一.迭代器(iterator) 在Python中,for循环可以用于Python中的任何类型,包括列表.元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器 迭代器是一个实现了迭代器协议

python中的那些“神器”

"武林至尊,宝刀屠龙,号令天下,莫敢不从,倚天不出,谁与争锋",这是神器.不过今天要说的python中的"神器"就没有这么厉害了,这里要说的"神器"其实就是名称里面带了个"器"的,如下: 列表解析器 迭代器 生成器 装饰器 列表解析器 现在遇到了这样一个问题需要解决:"有一个数字的列表,要求对该列表中的奇数乘以2,返回处理完成后的列表(不改变原来列表的顺序,仅对列表中的奇数乘以2)",比较传统的方法可能会是

Python中字符串格式化如何实现?

Python开发中字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存. This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing '%' string formatting operator. 1.百分号方式 %[(na