python利用lxml解析xmlファイル
2479 ワード
python利用lxml解析xmlファイル
次のプログラムを実行する前に、まずあなたの運行環境がpythonとlxmlにサポートされていることを保証します。
lxmlファイルがインストールされていない場合は、参考してください。http://blog.csdn.net/zhaokuo719/article/details/8209496 インストールを行うlxml
次のプログラムを実行する前に、まずあなたの運行環境がpythonとlxmlにサポートされていることを保証します。
lxmlファイルがインストールされていない場合は、参考してください。http://blog.csdn.net/zhaokuo719/article/details/8209496 インストールを行うlxml
#!/usr/bin/python
#--*--coding:UTF-8--*--
from lxml import etree
import re
def operationXML(xml_file,lastModparentNode,lastModChildNode=[]):
try:
parentNode = ""
allChildNodes = []
doc = etree.ElementTree(file = xml_file)
root = doc.getroot();
ns = getNameSpace(doc)
if ns != None:
parentNode = root.findall(ns+lastModparentNode,namespaces = None)
else:
parentNode = root.findall(lastModparentNode,namespaces = None)
if parentNode == None or len(parentNode) == 0:
print ("%s is emtpy"%(xml_file))
else:
for node_contents in parentNode:
childNode=[]
if len(lastModChildNode)!=0:
for childeNode in lastModChildNode:
node_text =""
if ns== None:
node_text = node_contents.find(childeNode)
else:
node_text = node_contents.find(ns+childeNode)
childNode.append(node_text.text)
else:
for childAll in list(node_contents):
childNode.append(childAll.text)
allChildNodes.append(childNode)
print allChildNodes
except Exception,e:
print e
# doc namespaces
def getNameSpace(doc):
ns = None
try:
root = doc.getroot()
r = re.compile('({.+})')
if r.search(root.tag)!=None:
ns = r.search(root.tag).group(1)
except Exception, e:
print e
return ns
if __name__ =="__main__":
"""
xml :( )
xiaozhao
m
30
zhao
boy
12
"""
operationXML("D:/a.xml", "employee",["name"])