python解析xml文件操作实例

本文实例讲述了python解析xml文件操作的实现方法。分享给大家供大家参考。具体方法如下:

xml文件内容如下:

<?xml version="1.0" ?>
<!--Simple xml document__chapter 8-->
<book>
  <title>
    sample xml thing
  </title>
  <author>
    <name>
      <first>
        ma
      </first>
      <last>
        xiaoju
      </last>
    </name>
    <affiliation>
      Springs Widgets, Inc.
    </affiliation>
  </author>
  <chapter number="1">
    <title>
      First
    </title>
    <para>
      I think widgets are greate.You should buy lots of them forom
      <company>
        Spirngy Widgts, Inc
      </company>
    </para>
  </chapter>
</book>

python代码:

from xml.dom import minidom, Node
import re, textwrap 

class SampleScanner:
  """""" 

  def __init__(self, doc):
    """Constructor"""
    assert(isinstance(doc, minidom.Document))
    for child in doc.childNodes:
      if child.nodeType == Node.ELEMENT_NODE and \
        child.tagName == "book":
        self.handle_book(child) 

  def handle_book(self, node): 

    for child in node.childNodes:
      if child.nodeType != Node.ELEMENT_NODE:
        continue
      if child.tagName == "title":
        print "Book titile is:", self.gettext(child.childNodes)
      if child.tagName == "author":
        self.handle_author(child)
      if child.tagName == "chapter":
        self.handle_chapter(child) 

  def handle_chapter(self, node):
    number = node.getAttribute("number")
    print "number:", number
    title_node = node.getElementsByTagName("title")
    print "title:", self.gettext(title_node) 

    for child in node.childNodes:
      if child.nodeType != Node.ELEMENT_NODE:
        continue
      if child.tagName == "para":
        self.handle_chapter_para(child) 

  def handle_chapter_para(self, node):
    company = ""
    company = self.gettext(node.getElementsByTagName("company"))
    print "chapter:para:company", company 

  def handle_author(self, node):
    for child in node.childNodes:
      if child.nodeType != Node.ELEMENT_NODE:
        continue
      if child.tagName == "name":
        self.handle_author_name(child)
      if child.tagName == "affiliation":
        print "affiliation:", self.gettext(child.childNodes) 

  def handle_author_name(self, node):
    first = ""
    last = ""
    for child in node.childNodes:
      if child.nodeType != Node.ELEMENT_NODE:
        continue
      if child.tagName == "first":
        first = self.gettext(child.childNodes)
      if child.tagName == 'last':
        last = self.gettext(child.childNodes) 

    print "firstname:%s,lastname:%s" % (first, last) 

  def gettext(self, nodelist):
    retlist = []
    for node in nodelist:
      if node.nodeType == Node.TEXT_NODE:
        retlist.append(node.wholeText)
      elif node.hasChildNodes:
        retlist.append(self.gettext(node.childNodes)) 

    return re.sub('\s+', " ", ''.join(retlist)) 

if __name__=="__main__":
  doc = minidom.parse("simple.xml")
  sample = SampleScanner(doc)

希望本文所述对大家的Python程序设计有所帮助。

时间: 2014-10-03

Python将xml和xsl转换为html的方法

本文实例讲述了Python将xml和xsl转换为html的方法.分享给大家供大家参考.具体分析如下: 这里需要用libxml2,所以还要先安装了libxml2模块才能使用.代码如下: # -*- coding: mbcs -*- #!/usr/bin/python import libxml2, libxslt class compoundXML: def __init__(self): self._result = None self._xsl = None self._xml = None

Python中将字典转换为XML以及相关的命名空间解析

尽管 xml.etree.ElementTree 库通常用来做解析工作,其实它也可以创建XML文档. 例如,考虑如下这个函数: from xml.etree.ElementTree import Element def dict_to_xml(tag, d): ''' Turn a simple dict of key/value pairs into XML ''' elem = Element(tag) for key, val in d.items(): child = Element(k

Python获取任意xml节点值的方法

本文实例讲述了Python获取任意xml节点值的方法.分享给大家供大家参考.具体实现方法如下: # -*- coding: utf-8 -*- import xml.dom.minidom ELEMENT_NODE = xml.dom.Node.ELEMENT_NODE class SimpleXmlGetter(object): def __init__(self, data): if type(data) == str: self.root = xml.dom.minidom.parse(d

Python中使用SAX解析xml实例

SAX是一种基于事件驱动的API.利用SAX解析XML文档牵涉到两个部分:解析器和事件处理器.解析器负责读取XML文档,并向事件处理器发送事件,如元素开始跟元素结束事件;而事件处理器则负责对事件作出相应,对传递的XML数据进行处理. 实例: 复制代码 代码如下: import  sys, string from  xml.sax import  handler, make_parser    class  TestHandler(handler.ContentHandler):         

Python实现对象转换为xml的方法示例

本文实例讲述了Python实现对象转换为xml的方法.分享给大家供大家参考,具体如下: # -*- coding:UTF-8 -*- ''''' Created on 2010-4-20 @author: 忧里修斯 ''' import xml.etree.ElementTree as ET import xml.dom.minidom as minidom from addrbook.domain import Person class Converter(object): ''''' 实现P

python操作xml文件详细介绍

关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 一.什么是xml? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. abc.xml 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <catalo

Python 解析XML文件

Python文件: 复制代码 代码如下: #parsexml.py #本例子参考自python联机文档,做了适当改动和添加 import xml.parsers.expat #控制打印缩进 level = 0 #获取某节点名称及属性值集合 def start_element(name, attrs): global level print ' '*level, 'Start element:', name, attrs level = level + 1 #获取某节点结束名称 def end_e

Python实现把xml或xsl转换为html格式

前些天用python处理xml的转换的一个小程序,用来把xml,xsl转换成html. 用的libxml2,所以还要先安装了libxml2模块才能使用. # -*- coding: mbcs -*- #!/usr/bin/python import libxml2, libxslt class compoundXML: def __init__(self): self._result = None self._xsl = None self._xml = None def do(self, xm

python写入xml文件的方法

本文实例讲述了python写入xml文件的方法.分享给大家供大家参考.具体分析如下: 本范例通过xml模块对xml文件进行写入操作 from xml.dom.minidom import Document doc = Document() people = doc.createElement("people") doc.appendChild(people) aperson = doc.createElement("person") people.appendChi

Python 提取dict转换为xml/json/table并输出的实现代码

核心代码: #!/usr/bin/python #-*- coding:gbk -*- #设置源文件输出格式 import sys import getopt import json import createDict import myConToXML import myConToTable def getRsDataToDict(): #获取控制台中输入的参数,并根据参数找到源文件获取源数据 csDict={} try: #通过getopt获取参数 opts,args=getopt.geto

Python实现简单的多任务mysql转xml的方法

本文实例讲述了Python实现简单的多任务mysql转xml的方法.分享给大家供大家参考,具体如下: 为了需求导出的格式尽量和navicat导出的xml一致. 用的gevent,文件i/o操作会阻塞,所以并不会完全异步. 1. mysql2xml.py: # -*- coding: utf-8 -*- ''' Created on 2014/12/27 @author: Yoki ''' import gevent import pymysql from pymysql.cursors impo

简单的php+mysql聊天室实现方法(附源码)

本文实例讲述了简单的php+mysql聊天室实现方法.分享给大家供大家参考,具体如下: 这里介绍的程序分为 8 个文件: frameset框架页面:index.php 显示聊天室内容页:show.php 用户登陆页面:login.php 用户发言页面:speak.php 数据库配置文件:config.php 页面美化样式:style.css 数据库文件:chat.sql 发言表情包:face/ 分别介绍如下: 一.数据库文件chat.sql如下: SET FOREIGN_KEY_CHECKS=0

Python django使用多进程连接mysql错误的解决方法

问题 mysql 查询出现错误 error: (2014, "Commands out of sync; you can't run this command now")1 查询 mysql文档中的解释 If you get Commands out of sync; you can't run this command now in your client code, you are calling client functions in the wrong order.   Thi

Python实现简单的文件传输与MySQL备份的脚本分享

用python实现简单Server/Client文件传输: 服务器端: #!/usr/bin/python import SocketServer, time class MyServer(SocketServer.BaseRequestHandler): userInfo = { 'leonis' : 'leonis', 'hudeyong' : 'hudeyong', 'mudan' : 'mudan' } def handle(self): print 'Connected from',

python简单实现操作Mysql数据库

用python编写数据库的代码很方便,但是如果不想自己写sql语句,其实还有更多的讨巧办法.使用webpy的db库就是不错的一个选择.当然为了使用webpy的db,之前你还需要安装MySQLdb,其他的就不需要做什么了. 1.安装MySQLdb库 sudo apt-get install python-MySQLdb 2.安装webpy sudo apt-get install python-webpy 3.连接数据库 import web db = web.database(dbn='mysq

使用Python实现简单的服务器功能

socket接口是实际上是操作系统提供的系统调用.socket的使用并不局限于Python语言,你可以用C或者Java来写出同样的socket服务器,而所有语言使用socket的方式都类似(Apache就是使用C实现的服务器) Web框架就是提前写好了服务器.不能跨语言的使用框架.框架的好处在于帮你处理了一些细节,从而实现快速开发,但同时受到python本身性能的限制.我们已经看到,许多成功的网站都是利用动态语言(比如Python, Ruby或者PHP,比如twitter和facebook)快速

Python实现简单http服务器

写一个python脚本,实现简单的http服务器功能: 1.浏览器中输入网站地址:172.20.52.163:20014 2.server接到浏览器的请求后,读取本地的index.html文件的内容,回发给浏览器 代码实现 server.py #!/usr/bin/python import socket import signal import errno from time import sleep def HttpResponse(header,whtml): f = file(whtml

python编写简单端口扫描器

本文实例为大家分享了python编写简单端口扫描器的具体代码,供大家参考,具体内容如下 直接放代码 此代码只支持扫描域名,要扫描IP请自己修改 from socket import * from threading import Thread import optparse Port = [80,21,23,22,25,110,443,1080,3306,3389,1521,1433] Server = ['HTTP','FTP','TELNET','SSH','SMTP','POP3','HT

python多线程案例之多任务copy文件完整实例

本文实例讲述了python多线程案例之多任务copy文件.分享给大家供大家参考,具体如下: import os import multiprocessing def copy_file(q,file_name, old_folder_name, new_folder_name): """完成文件的复制""" old_f = open(old_folder_name+"/"+file_name, "rb")

Python操作SQLite/MySQL/LMDB数据库的方法

1.概述 1.1前言 最近在存储字模图像集的时候,需要学习LMDB,趁此机会复习了SQLite和MySQL的使用,一起整理在此. 1.2环境 使用win7,Python 3.5.2. 2.SQLite 2.1准备 SQLite是一种嵌入式数据库,它的数据库就是一个文件.Python 2.5x以上版本内置了SQLite3,使用时直接import sqlite3即可. 2.2操作流程 概括地讲,操作SQLite的流程是: ·通过sqlite3.open()创建与数据库文件的连接对象connectio