首先下載lxml,?[http://www.lfd.uci.edu/~gohlke/pythonlibs/](http://www.lfd.uci.edu/~gohlke/pythonlibs/)?,然后添加引用
fromlxmlimport_elementpathasDONTUSE
fromlxmlimportetree
具體示例:
**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()**
**????for**element**in**root.iter():
?????????element.tail=None
**6.遍歷xml下的第一級子節點.iterchildren()**
??foreinsrcParentNode.iterchildren():
??????ifeissrcParentNode:
??????????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()
- 前言
- PythonPath在Windows 下的設置
- Sublime Text: [Decode error - output not utf-8]
- Python 寫文件時的Unicode設置
- python中文件打開的各個標識含義
- python 3中對list進行sort時,返回值為None
- python 3中使用getattr和*args時, 出現傳入參數不一致的問題
- import module, from module import funtion區別
- Python 中list, dictionary 與 file相互操作
- 編譯Python出現Tab,空格的問題
- Sublime Text2中Evernote 插件的使用
- python中全局變量的使用
- python中string和bool的轉換
- python中http的一些編碼轉換
- python中http請求中添加cookie支持
- python構造一個http請求
- python中如何定義main方法
- python為類定義構造函數
- python中print的幾種用法
- 自己寫的工具:把Evernote(印象筆記)的筆記導入到博客(Blog)中
- Python打包成exe
- python中lxml的應用