python网络编程学习笔记(8)XML生成与解析(DOM、ElementTree)

上传人:s9****2 文档编号:558406472 上传时间:2022-12-29 格式:DOC 页数:10 大小:110.50KB
返回 下载 相关 举报
python网络编程学习笔记(8)XML生成与解析(DOM、ElementTree)_第1页
第1页 / 共10页
python网络编程学习笔记(8)XML生成与解析(DOM、ElementTree)_第2页
第2页 / 共10页
python网络编程学习笔记(8)XML生成与解析(DOM、ElementTree)_第3页
第3页 / 共10页
python网络编程学习笔记(8)XML生成与解析(DOM、ElementTree)_第4页
第4页 / 共10页
python网络编程学习笔记(8)XML生成与解析(DOM、ElementTree)_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《python网络编程学习笔记(8)XML生成与解析(DOM、ElementTree)》由会员分享,可在线阅读,更多相关《python网络编程学习笔记(8)XML生成与解析(DOM、ElementTree)(10页珍藏版)》请在金锄头文库上搜索。

1、xml.dom篇 DOM是Document Object Model的简称,XML 文档的高级树型表示。该模型并非只针对 Python,而是一种普通XML 模型。Python 的 DOM 包是基于 SAX 构建的,并且包括在 Python 2.0 的标准 XML 支持里。一、xml.dom的简单介绍、主要方法:minidom.parse(filename):加载读取XML文件doc.documentElement:获取XML文档对象node.getAttribute(AttributeName):获取XML节点属性值node.getElementsByTagName(TagName):获取XM

2、L节点对象集合node.childNodes :返回子节点列表。node.childNodesindex.nodeValue:获取XML节点值node.firstChild:访问第一个节点,等价于pagexml.childNodes0返回Node节点的xml表示的文本:doc = minidom.parse(filename)doc.toxml(UTF-8)访问元素属性:Node.attributesid a.name #就是上面的 id a.value #属性的值 、举例说明例:文件名:book.xml Book message bookone python check 001 200 bo

3、oktwo python learn 002 300 http:/ ()创建对象import xml.dom.minidomdom1=xml.dom.minidom.parse(book.xml)()获取根字节root=dom1.documentElement #这里得到的是根节点 print root.nodeName,root.nodeValue,root.nodeType返回结果为:info , None , 1其中:info是指根节点的名称root.nodeNameNone是指根节点的值root.nodeValue是指根节点的类型root.nodeType,更多节点类型如下表:Node

4、TypeNamed Constant1ELEMENT_NODE2ATTRIBUTE_NODE3TEXT_NODE4CDATA_SECTION_NODE5ENTITY_REFERENCE_NODE6ENTITY_NODE7PROCESSING_INSTRUCTION_NODE8COMMENT_NODE9DOCUMENT_NODE10DOCUMENT_TYPE_NODE11DOCUMENT_FRAGMENT_NODE12NOTATION_NODE(3)子元素、子节点的访问、返回root子节点列表import xml.dom.minidomdom1=xml.dom.minidom.parse(boo

5、k.xml)root=dom1.documentElement#print root.nodeName,root.nodeValue,root.nodeTypeprint root.childNodes运行结果为:, , , , , , 、获取XML节点值,如返回根节点下第二个子节点intro的值和名字,添加下面一句print root.childNodes1.nodeName,root.childNodes1.nodeValue运行结果为:intro None、访问第一个节点print root.firstChild.nodeName运行结果为:#text、获取已经知道的元素名字的值,htt

6、p:/ 如要获取intro后的book message可以使用下面的方法:import xml.dom.minidomdom1=xml.dom.minidom.parse(book.xml)root=dom1.documentElement#print root.nodeName,root.nodeValue,root.nodeTypenode= root.getElementsByTagName(intro)0for node in node.childNodes: if node.nodeType in (node.TEXT_NODE,node.CDATA_SECTION_NODE): p

7、rint node.data这种方法的不足之处是需要对类型进行判断,使用起来不是很方便。运行结果是:Book message二、解析对上面的xml进行解析方法1 代码如下:#小五义 http:/ 解析import xml.dom.minidomdom1=xml.dom.minidom.parse(book.xml)root=dom1.documentElementbook=booknode=root.getElementsByTagName(list)for booklist in booknode: print =*20 print id:+booklist.getAttribute(id)

8、 for nodelist in booklist.childNodes: if nodelist.nodeType =1: print nodelist.nodeName+:, for node in nodelist.childNodes: print node.data运行结果为:= id:001 head: bookone name: python check number: 001 page: 200 = id:002 head: booktwo name: python learn number: 002 page: 300方法二:代码:#小五义 http:/ 解析 import

9、xml.dom.minidomdom1=xml.dom.minidom.parse(book.xml)root=dom1.documentElementbook=booknode=root.getElementsByTagName(list)for booklist in booknode: print =*20 print id:+booklist.getAttribute(id) print head:+booklist.getElementsByTagName(head)0.childNodes0.nodeValue.strip() print name:+booklist.getEle

10、mentsByTagName(name)0.childNodes0.nodeValue.strip() print number:+booklist.getElementsByTagName(number)0.childNodes0.nodeValue.strip() print page:+booklist.getElementsByTagName(page)0.childNodes0.nodeValue.strip() 运行结果与方法一一样。比较上面的两个方法,方法一根据xml的树结构进行了多次循环,可读性上不及方法二,方法直接对每一个节点进行操作,更加清晰。为了更加方法程序的调用,可以使

11、用一个list加一个字典进行存储,具体见方法3:#小五义 http:/ 解析 import xml.dom.minidom dom1=xml.dom.minidom.parse(book.xml) root=dom1.documentElement book= booknode=root.getElementsByTagName(list) for booklist in booknode: bookdict= bookdictid=booklist.getAttribute(id) bookdicthead=booklist.getElementsByTagName(head)0.child

12、Nodes0.nodeValue.strip() bookdictname=booklist.getElementsByTagName(name)0.childNodes0.nodeValue.strip() bookdictnumber=booklist.getElementsByTagName(number)0.childNodes0.nodeValue.strip() bookdictpage=booklist.getElementsByTagName(page)0.childNodes0.nodeValue.strip() book.append(bookdict) print book运行结果为:head: ubookone, page: u200, number: u00

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号