Python XML的解析与创建
2017-10-18 20:25
501 查看
以下内容为装载:
文章出处 http://blog.csdn.net/SeeTheWorld518/article/details/49535211
一个 DOM 的解析器在解析一个 XML 文档时,一次性读取整个文档,把文档中所有元素保存在内存中的一个树结构里,之后你可以利用DOM 提供的不同的函数来读取或修改文档的内容和结构,也可以把修改过的内容写入xml文件。
下面是一个简单的xml文档实例(book.xml):
使用Python的xml.dom.minidom模块来解析这个xml文件:
总结: 如果要判断某个节点的属性用的语句是:node.hasAttribute(‘type’)
以下部分我写给我自己看的一些总结
如果使用ET来解析xml文件,这个时候我们可以这么做。
文章出处 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-8 import xml.dom.minidom from xml.dom.minidom import parse #从xml.dom.minidom模块引入解析器parse #minidom解析器打开xml文档并将其解析为内存中的一棵树 DOMTree = xml.dom.minidom.parse(r"C:\book.xml") #获取xml文档对象,就是拿到树的根 booklist = DOMTree.documentElement if booklist.hasAttribute("type") : #判断根节点booklist是否有type属性,有则获取并打印属性的值 print "Root element is", booklist.getAttribute("type") #获取booklist对象中所有book节点的list集合 books = booklist.getElementsByTagName("book") print "book节点的个数:", books.length for 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 ET except 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"
相关文章推荐
- python 创建并解析XML
- python自带的minidom创建和解析xml
- python解析xml(创建xml)
- Python基础(十一) 使用xml.dom 创建XML文件与解析
- python创建和解析XML
- python创建并解析xml文件
- 使用python自带的xml.dom创建和解析xml
- python创建和解析xml文件
- Python XML的解析与创建
- Python解析xml-pybatis的准备阶段(八)
- python解析XML文件
- Python 专题五 XML JSON解析
- Python xml.etree.ElementTree解析XML文件实例演示(十六02)
- DOM创建及解析XML文件
- python-minidom模块【解析xml】
- dom4j 创建,解析xml
- python 的xml解析
- python xml解析
- python xml解析之ElementTree 基本读操作示例
- 横向对比分析Python解析XML的四种方式