Python XML的解析与创建
来源:互联网 发布:linux翻看历史命令记录 编辑:程序博客网 时间:2024/06/07 09:07
以下内容为装载:
文章出处 http://blog.csdn.net/SeeTheWorld518/article/details/49535211
XML解析基本思路是
现将xml 文档内容一次性全部读入内存并解析成树的结构,然后拿到这个树结构的根结点,然后我们就可以通过调用解析XML的一些函数来操作这个树了,也就是操作xml文档数据。
xml.dom解析xml
文件对象模型(Document Object Model,简称DOM),是W3C组织推荐处理可扩展语言的标准编程接口。
一个 DOM 的解析器在解析一个 XML 文档时,一次性读取整个文档,把文档中所有元素保存在内存中的一个树结构里,之后你可以利用DOM 提供的不同的函数来读取或修改文档的内容和结构,也可以把修改过的内容写入xml文件。
下面是一个简单的xml文档实例(book.xml):
<?xml version="1.0" encoding="utf-8" ?><!--this is a test about xml.--><booklist type="science and engineering"> <book category="math"> <title>learning math</title> <author>张三</author> <pageNumber>561</pageNumber> </book> <book category="Python"> <title>learning Python</title> <author>李四</author> <pageNumber>600</pageNumber> </book></booklist>
使用Python的xml.dom.minidom模块来解析这个xml文件:
#!/usr/bin/python#coding=utf-8import xml.dom.minidomfrom xml.dom.minidom import parse #从xml.dom.minidom模块引入解析器parse#minidom解析器打开xml文档并将其解析为内存中的一棵树DOMTree = xml.dom.minidom.parse(r"C:\book.xml")#获取xml文档对象,就是拿到树的根booklist = DOMTree.documentElementif booklist.hasAttribute("type") : #判断根节点booklist是否有type属性,有则获取并打印属性的值 print "Root element is", booklist.getAttribute("type")#获取booklist对象中所有book节点的list集合books = booklist.getElementsByTagName("book")print "book节点的个数:", books.lengthfor book in books : print "*******************book*******************" if book.hasAttribute("category") : print "category is", book.getAttribute("category") #根据结点名title拿到这个book结点下所有的title结点的集合list。 #[0]表示第一个title标签,因为一个<book>...</book>之间可能会 #定义多个title标签 title = book.getElementsByTagName('title')[0] print "Title is", title.childNodes[0].data author = book.getElementsByTagName('author')[0] print "author is", author.childNodes[0].data pageNumber = book.getElementsByTagName('pageNumber')[0] print "pageNumber is", pageNumber.childNodes[0].data
总结: 如果要判断某个节点的属性用的语句是:node.hasAttribute(‘type’)
以下部分我写给我自己看的一些总结
如果使用ET来解析xml文件,这个时候我们可以这么做。
try: import xml.etree.cElementTree as ETexcept ImportError: import xml.etree.ElementTree as ET try: tree = ET.parse(guifile) for elem in tree.iter(): if ( elem.tag == 'EventAndHandler' ): event = elem.get('event') if( elem.attrib.has_key('realHandler') ): realHandler = elem.get('realHandler') cmd = "./handlerExtract.sh '{0}' {1}".format(realHandler,eventOutPath) os.system(cmd) else: handler = elem.get('handler') cmd = "./handlerExtract.sh '{0}' {1}".format(handler,eventOutPath) os.system(cmd) ''' if( elem.attrib.has_key('realHandler') ): realHandler = elem.get('realHandler') cmd = "./handlerExtract.sh '{0}'".format(realHandler) os.system(cmd) ''' except: print "cannot parse the GuiHierarchy file!\n"
阅读全文
0 0
- Python XML的解析与创建
- Python XML的解析与创建
- xml的创建与解析
- python解析xml(创建xml)
- xml解析与创建
- xml解析与创建
- JAVA XML的解析与创建
- 基于dom4j的xml创建与解析
- python创建和解析XML
- python 创建并解析XML
- minixml创建与解析XML
- PHP创建与解析XML
- PHP创建与解析XML
- Android 创建与解析XML
- java xml解析与创建
- php创建与解析xml
- PHP创建与解析XML
- python 的xml解析
- 自定义标签
- 201312-1 出现次数最多的数 ccf
- interrupt,interrupted和isInterrupted
- JZOJ4883. 【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰
- Dynamic CRM 2016 IFD配置(1)证书颁发机构配置
- Python XML的解析与创建
- Mysql 2013错误(Lost connection to MySQL server )解决经验
- response向浏览器写随机数,汉字以及资源下载
- elasticSearch 5.0.0 安装部署常见错误或问题
- 第三章实验题
- 输入半径计算出圆的面积和周长
- 三角形的判定
- django学习——pip list中出现如下警告
- 算法储备之希尔排序