Python解析xml数据
⽂章⽬录
xml
xml(Extensible Markup Language,可扩展标记语⾔),它是⼀种标记语⾔,定义了⼀组规则。
xml没有什么特别的,仅仅是纯⽂本内容,只是和json定义的规则不⼀样⽽已。
xml数据结构
<data info="student">
<name>⼩明</name>
<age>18</age>
<gender>男</gender>
</data>
上述就是⼀个简单的xml数据,这⾥有⼏个概念,包括:
根元素 <data>
⼦元素 <name><age>…
标签 带<>都是标签<data>是开始标签,</data>是结束标签
属性 开始标签中有其它信息的是属性如data标签中的info
⽂本 被开始标签和结束标签包含的是⽂本,如⼩明
这⾥就简单的复习了下xml数据。下⾯使⽤Python来解析xml数据。
python中的xml模块
python⾃带xml模块⽅便开发者解析xml数据。xml模块中包含了⼴泛使⽤的API接⼝--------SAX和DOM。
SAX(Simple API for XML)解析xml数据
xml简单处理API,通过解析XML的过程来触发事件来处理XML⽂件。不会将整个⽂件读取到内存中,只读取需要部分的内容。
xml.sax下提供的函数:
函数名功能
make_parser(parser_list=[])创建并返回SAX解析器
parse(filename_or_strease,handler,error_handler=handler.ErrorHandler())解析xml⽂件,filename_or_stream为指定解析的⽂件或流,handler为处理XML的回调,通过setContentHandler设置,error_handler为错
python解析json文件误回调处理
parseString(string,handler,error_handler=handler.ErrorHandler()与parse⼀样,只是从string中解析xml SAXException(msg,exception=None)XML操作相关的错误或警告ContentHandler主要事件回调:
⽅法名说明
startDocument()⽂档解析开始调⽤⼀次
endDocument()解析到⽂档结尾调⽤⼀次
startElement(name,attrs)⽂件模式下,遇到开始标签调⽤该⽅法,name是标签名,attrs是属性值字典endElement(name)⽂件模式下,遇到结束标签调⽤该⽅法,name是标签名
characters(content)核⼼⽅法,1.从⾏开始,遇到标签之前存在字符,content的值为这些字符。2.从⼀个标签开始到⼀个标签结束,content为标签中包含的字符。3.从⼀个标签到⾏结束,存在字符,content为这些字符
⽅法名说明
xml.sax解析代码:
# coding=utf-8
import xml.sax
data_list =[]
class MyContentHandler(xml.sax.ContentHandler):
def__init__(self):
super().__init__()
self.currentData =""
self.name =""
self.age =""
def startDocument(self):
批处理if gotoprint("开始解析xml")
def endDocument(self):
print("解析xml结束")
def startElement(self, name, attrs):
self.currentData = name
def endElement(self, name):
global data_list
if name =='name':
data_list.append(self.name)
elif name =='age':
c语言冒泡法排序n个数data_list.append(self.age)
elif name =='gender':
data_list.der)
def characters(self, content):
javascript程序控制结构if self.currentData =="name":
self.name = content
month函数提取年份elif self.currentData =="age":
self.age = content
elif self.currentData =="gender":
if __name__ =='__main__':
saxParse = xml.sax.make_parser()
saxParse.setFeature(xml.sax.handler.feature_namespaces,0)# 关闭命名解析
handler = MyContentHandler()
saxParse.setContentHandler(handler)
saxParse.parse('l')
print(data_list)
DOM(Document Object Model,⽂档对象模型)解析xml数据
DOM(⽂档对象模型)是W3C组织推荐处理可扩展标记语⾔的标准编程接⼝。
DOM读取xml⽂件内容的基本操作:1.parse解析器(读取内容),2.DOM函数处理xml数据。mysql datediff 秒
DOM对象的相关函数
接⼝对象名说明
DOMImplementation DOM对象底层实现
Node⽂档中⼤多数对象的基本接⼝
NodeList节点列表接⼝
DocumentType⽂档声明信息
Document整个⽂档对象
Element元素节点
Attr属性节点
Comment在源⽂档中表⽰评论
Text节点中包含的⽂本内容ProcessingInstruction处理指令
dom解析xml数据⽰例代码:
# coding=utf-8
import xml.dom.minidom
data_list =[]
if __name__ =='__main__':
document_tree = xml.dom.minidom.parse('l')
collection = document_tree.documentElement # 获取所有元素
l())
name_node = ElementsByTagName("name")[0]
name = name_node.childNodes[0].data
data_list.append(name)
age_node = ElementsByTagName("age")[0]
age = age_node.childNodes[0].data
data_list.append(age)
gender_node = ElementsByTagName("gender")[0]
gender = gender_node.childNodes[0].data
data_list.append(gender)
print(data_list)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论