使用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中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 Python
Python内置函数dir详解
Apr 14 Python
举例讲解Python设计模式编程中的访问者与观察者模式
Jan 26 Python
Python的装饰器使用详解
Jun 26 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
Dec 20 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
我用Python抓取了7000 多本电子书案例详解
Mar 25 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
python基于pdfminer库提取pdf文字代码实例
Aug 15 Python
python3实现elasticsearch批量更新数据
Dec 03 Python
python 回溯法模板详解
Feb 26 Python
python 无损批量压缩图片(支持保留图片信息)的示例
Sep 22 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生成二维码的两个方法和实例
2014/07/01 PHP
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
Js 本页面传值实现代码
2009/05/17 Javascript
jQuery拖拽div实现思路
2014/02/19 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
JS使用cookie实现只出现一次的广告代码效果
2017/04/22 Javascript
node.js操作mysql简单实例
2017/05/25 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
python3实现字符串操作的实例代码
2019/04/16 Python
Python实现12306火车票抢票系统
2019/07/04 Python
django 中的聚合函数,分组函数,F 查询,Q查询
2019/07/25 Python
python3 求约数的实例
2019/12/05 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
两则小学生的自我评价分享
2013/11/14 职场文书
毕业生自荐书模版
2014/01/04 职场文书
2014年国培研修感言
2014/03/09 职场文书
教师三严三实对照检查材料
2014/09/25 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书
Nginx反向代理及负载均衡如何实现(基于linux)
2021/03/31 Servers
golang gopm get -g -v 无法获取第三方库的解决方案
2021/05/05 Golang
Vue详细的入门笔记
2021/05/10 Vue.js
CSS 伪元素::marker详解
2021/06/26 HTML / CSS
Python OpenCV实现图形检测示例详解
2022/04/08 Python
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android