首先下载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应用的更多相关文章

  1. Windows下Python安装lxml

    1.下载easy_install的安装包,下载地址:https://pypi.Python.org/pypi/setuptools 我是Windows7,所以直接下载Windows(Simplify) ...

  2. 【python】lxml中多个xml采用相同节点时出现的问题

    今天突然发现了一个lxml的坑. 假设我们有一个节点 <id>123</id> 有两个父节点都要用上述节点,则必须把上面的节点写两遍!用同一个会出错! 出错例子: #!/usr ...

  3. 【python】lxml

    来源:http://lxml.de/tutorial.html lxml是python中处理xml的一个非常强大的库,可以非常方便的解析和生成xml文件.下面的内容翻译了链接中的一部分 1.生成空xm ...

  4. 【python】lxml查找属性为指定值的节点

    假设有如下xml在/home/abc.xml位置 <A> <B id=" name="apple"/> <B id=" name= ...

  5. Python之lxml

    作者:Shane 出处:http://bluescorpio.cnblogs.com lxml takes all the pain out of XML. Stephan Richter lxml是 ...

  6. 在MacOS下Python安装lxml报错xmlversion.h not found 报错的解决方案

    最近在看一个自动化测试框架的问题,需要用到Lxml库,下载lxml总是报错. 1,使用pip安装lxml pip install lxml 2,然后报错了,报错内容是: In file include ...

  7. Python使用lxml模块和Requests模块抓取HTML页面的教程

    Web抓取Web站点使用HTML描述,这意味着每个web页面是一个结构化的文档.有时从中 获取数据同时保持它的结构是有用的.web站点不总是以容易处理的格式, 如 csv 或者 json 提供它们的数 ...

  8. Python 安装 lxml 插件

    1.下载 lxml 地址:https://pypi.python.org/pypi/lxml/3.8.0#downloads 我用的是python 3.6,我下载了  lxml-3.8.0-cp36- ...

  9. windows下使用pip安装python模块lxml

    pip install lxml 1 1 会有如下问题:  结果一路解决下去,解决了一个坑还是有一个坑,遂放弃,查找有没有别的解决办法. 亲测使用wheel+pip可以成功安装lxml! wheel本 ...

  10. 【Python】Python加lxml实现图片解析下载功能

    1.下载网页:OpenHtml.py import urllib.request from urllib.parse import quote class HtmlLoader(object): de ...

随机推荐

  1. ejs模板引擎的使用

    引入ejs.min.js 创建模板,以<%=jsCode%>包裹起来其余的html和html结构一样 focusTemplateData是模板使用的数据,使用$.each()方法遍历绑定数 ...

  2. [Angular] Intercept HTTP requests in Angular

    Being able to intercept HTTP requests is crucial in a real world application. Whether it is for erro ...

  3. Android LoaderManager与CursorLoader用法

    一.基本概念 1.LoaderManager LoaderManager用来负责管理与Activity或者Fragment联系起来的一个或多个Loaders对象. 每个Activity或者Fragme ...

  4. cocos 关于文件名称的各种坑 各种斜杠坑

    cocos 全部文件路径 的斜杠 必须 用 /  而不能够用 \ 不然编译到安卓各种坑 相对路径 第一个字符不可 带 / /*比如 res/test.png 这样的应该是标准的 /res/test.p ...

  5. Emacs常用快捷键

    基本命令 C-x C-f 打开/新建文件 C-x C-s 保存当前缓冲区 C-x C-w 当前缓冲区另存为 C-x C-v 关闭当前Buffer并打开新文件 C-x i 光标处插入文件 C-x b 切 ...

  6. 一个例子讲解wav头文件 stm32声音程序 录音和播放 wav

    下面我们一wav头文件来分析一下: 下面是双声道的,16位,48000采样录的wav文件: 打开属性,能看到的有用信息只有比特率了: 上图的比特率就是 wav头文件里的bitrate: 1536kbp ...

  7. DOS命令具体解释

    net use $">\\ip\ipc$Content$nbsp;" " /user:" " 建立IPC空链接   net use $" ...

  8. swift 旋转加载动画

    https://github.com/naoyashiga/RPLoadingAnimation

  9. Linux 如何查看一个进程的堆栈

    有两种方法: 第一种:pstack 进程ID 第二种,使用gdb 然后attach 进程ID,然后再使用命令 thread apply all bt 第三种:strace -f -p pid  该方法 ...

  10. RSA DH

    https://www.cnblogs.com/hiflora/archive/2013/07/04/3171775.html http://www.ruanyifeng.com/blog/2013/ ...