使用Python生成XML的方法实例


Posted in Python onMarch 21, 2017

本文实例讲述了使用Python生成XML的方法。分享给大家供大家参考,具体如下:

1. bookstore.py

#encoding:utf-8
'''
根据一个给定的XML Schema,使用DOM树的形式从空白文件生成一个XML。
'''
from xml.dom.minidom import Document
doc = Document() #创建DOM文档对象
bookstore = doc.createElement('bookstore') #创建根元素
bookstore.setAttribute('xmlns:xsi',"http://www.w3.org/2001/XMLSchema-instance")#设置命名空间
bookstore.setAttribute('xsi:noNamespaceSchemaLocation','bookstore.xsd')#引用本地XML Schema
doc.appendChild(bookstore)
############book:Python处理XML之Minidom################
book = doc.createElement('book')
book.setAttribute('genre','XML')
bookstore.appendChild(book)
title = doc.createElement('title')
title_text = doc.createTextNode('Python处理XML之Minidom') #元素内容写入
title.appendChild(title_text)
book.appendChild(title)
author = doc.createElement('author')
book.appendChild(author)
author_first_name = doc.createElement('first-name')
author_last_name = doc.createElement('last-name')
author_first_name_text = doc.createTextNode('张')
author_last_name_text = doc.createTextNode('三')
author.appendChild(author_first_name)
author.appendChild(author_last_name)
author_first_name.appendChild(author_first_name_text)
author_last_name.appendChild(author_last_name_text)
book.appendChild(author)
price = doc.createElement('price')
price_text = doc.createTextNode('28')
price.appendChild(price_text)
book.appendChild(price)
############book1:Python写网站之Django####################
book1 = doc.createElement('book')
book1.setAttribute('genre','Web')
bookstore.appendChild(book1)
title1 = doc.createElement('title')
title_text1 = doc.createTextNode('Python写网站之Django')
title1.appendChild(title_text1)
book1.appendChild(title1)
author1 = doc.createElement('author')
book.appendChild(author1)
author_first_name1 = doc.createElement('first-name')
author_last_name1 = doc.createElement('last-name')
author_first_name_text1 = doc.createTextNode('李')
author_last_name_text1 = doc.createTextNode('四')
author1.appendChild(author_first_name1)
author1.appendChild(author_last_name1)
author_first_name1.appendChild(author_first_name_text1)
author_last_name1.appendChild(author_last_name_text1)
book1.appendChild(author1)
price1 = doc.createElement('price')
price_text1 = doc.createTextNode('40')
price1.appendChild(price_text1)
book1.appendChild(price1)
########### 将DOM对象doc写入文件
f = open('bookstore.xml','w')
f.write(doc.toprettyxml(indent = ''))
f.close()

2. bookstore.xsd

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
 <xsd:element name="bookstore" type="bookstoreType"/>
 <xsd:complexType name="bookstoreType">
  <xsd:sequence maxOccurs="unbounded">
   <xsd:element name="book" type="bookType"/>
  </xsd:sequence>
 </xsd:complexType>
 <xsd:complexType name="bookType">
  <xsd:sequence>
   <xsd:element name="title" type="xsd:string"/>
   <xsd:element name="author" type="authorName"/>
   <xsd:element name="price" type="xsd:decimal"/>
  </xsd:sequence>
  <xsd:attribute name="genre" type="xsd:string"/>
 </xsd:complexType>
 <xsd:complexType name="authorName">
  <xsd:sequence>
   <xsd:element name="first-name" type="xsd:string"/>
   <xsd:element name="last-name" type="xsd:string"/>
  </xsd:sequence>
 </xsd:complexType>
</xsd:schema>

3. 根据上面的XML Schema用Python minidom生成的XML

bookstore.xml

<?xml version="1.0" ?>
<bookstore xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="bookstore.xsd">
 <book genre="XML">
  <title>
   Python处理XML之Minidom
  </title>
  <author>
   <first-name>
    张
   </first-name>
   <last-name>
    三
   </last-name>
  </author>
  <price>
   28
  </price>
 </book>
 <book genre="Web">
  <title>
   Python写网站之Django
  </title>
  <author>
   <first-name>
    李
   </first-name>
   <last-name>
    四
   </last-name>
  </author>
  <price>
   40
  </price>
 </book>
</bookstore>
Python 相关文章推荐
python模拟登录百度代码分享(获取百度贴吧等级)
Dec 27 Python
Python实现类继承实例
Jul 04 Python
Python实现批量读取word中表格信息的方法
Jul 30 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
python中numpy的矩阵、多维数组的用法
Feb 05 Python
Python 在字符串中加入变量的实例讲解
May 02 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
Jul 09 Python
Python判断有效的数独算法示例
Feb 23 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
May 07 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
Sep 06 Python
python 比较2张图片的相似度的方法示例
Dec 18 Python
如何使用scrapy中的ItemLoader提取数据
Sep 30 Python
Python存取XML的常见方法实例分析
Mar 21 #Python
Python正则简单实例分析
Mar 21 #Python
Python处理XML格式数据的方法详解
Mar 21 #Python
Python做简单的字符串匹配详解
Mar 21 #Python
Python 转义字符详细介绍
Mar 21 #Python
python 迭代器和iter()函数详解及实例
Mar 21 #Python
浅谈五大Python Web框架
Mar 20 #Python
You might like
PHP排序算法的复习和总结
2012/02/15 PHP
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
2017/09/20 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
js实现简单的打印表格
2020/01/15 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
2020/07/31 Javascript
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
python3操作注册表的方法(Url protocol)
2020/02/05 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
python遍历路径破解表单的示例
2020/11/21 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
工程造价专业大专生求职信
2013/10/06 职场文书
中专生的个人自我评价
2013/12/11 职场文书
自我推荐信范文
2014/05/09 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
护理医院见习报告
2014/11/03 职场文书
工程移交协议书
2016/03/24 职场文书
用Python selenium实现淘宝抢单机器人
2021/06/18 Python
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python