思路:

怎么运用python生成xml

 

近年来要用python生成一个xml格式的文件。因为有生龙活虎对内容是华语,原本的xml文件中应用了CDATA
的有的。 而此前的python程序所用的库中未有成立这些区域的艺术。无语研商了大半天。 最终用了 from lxml import etree
那几个库的情势。 这里将可运维的 python程序分享出来。 供大家仿效。
经过测量试验,这段代码是足以一贯运维生成xml格式内容的。 网络参照的入眼是
那几个网页。

 

 

 

复制代码

 1 # -*- coding:utf-8 -*-

 2 import sys

 3 import time

 4 import string

 5  

 6 from lxml import etree

 7 

 8 

 9 #安装默许字符集为UTF8 否则有个别时候转码会出难点

10 default_encoding = ‘utf-8’

11 if sys.getdefaultencoding() != default_encoding:

12     reload(sys)

13     sys.setdefaultencoding(default_encoding)

14 

15 def create_xml():

16 

17     data = etree.Element(“data”)

18     #1 interface_version

19     interface_version_txt = ‘5’

20     interface_version = etree.SubElement(data, ‘interface_version’)

21     interface_version.text = interface_version_txt

22     #2 site

23     site_txt = ‘www.xxx.com’

24     site = etree.SubElement(data, ‘site’)

25     site.text = site_txt

26     #3 lastmod

27     lastmod_txt = time.strftime(‘%Y-%m-%d’, time.localtime())

28     lastmod = etree.SubElement(data, ‘lastmod’)

29     lastmod.text = lastmod_txt

30     #5 app

31     app = etree.SubElement(data, ‘app’)

32     #6 title 

33     title_txt = u’%s’ % ‘真心话大冒险’

34     title_txt = etree.CDATA(title_txt)

35     title = etree.SubElement(app, ‘title’)

36     title.text = title_txt

37     #7 appid

38     appid = etree.SubElement(app, ‘appid’)

39     appid.text = ‘%s’ % ‘222’

40 

41     dataxml = etree.tostring(data, pretty_print=True,
encoding=”UTF-8″, method=”xml”, xml_declaration=True, standalone=None)

42     print dataxml

43     

44      

47 if __name__ == ‘__main__’:

48     create_xml()

如今要用python生成八个xml格式的公文。因为有豆蔻梢头部分内容是普通话,原本的xml文件中应用了CDATA
的有个别。 而以前的python程…

行使Python生成XML的法子实例,python生成xml实例

本文实例陈诉了运用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’,”
    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卡塔尔(英语:State of Qatar) 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卡塔尔(英语:State of Qatar) 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’卡塔尔(英语:State of Qatar) 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卡塔尔(英语:State of Qatar) ########### 将DOM对象doc写入文件
    f = open(‘bookstore.xml’,’w’) f.write(doc.toprettyxml(indent = ”卡塔尔国卡塔尔(قطر‎ f.close(卡塔尔

  2. bookstore.xsd





    <xsd:element name="book" type="bookType"/>
    

    <xsd:element name="title" type="xsd:string"/>
    <xsd:element name="author" type="authorName"/>
    <xsd:element name="price" type="xsd:decimal"/>
    

    <xsd:element name="first-name" type="xsd:string"/>
    <xsd:element name="last-name" type="xsd:string"/>
    

  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>

PS:这里再为我们提供六款有关xml操作的在线工具供我们参照他事他说加以考查运用:

在线XML/JSON相互转变工具:

在线格式化XML/在线压缩XML:

XML**在线压缩/格式化工具:
**

XML**代码在线格式化美化学工业具:
**

越来越多关于Python相关内容感兴趣的读者可查看本站专项论题:《Python操作xml数据本事总括》、《Python数据布局与算法教程》、《Python
Socket编制程序技能总计》、《Python函数使用技巧总括》、《Python字符串操作本事汇总》、《Python入门与进级优良教程》及《Python文件与目录操作技巧汇总》

指望本文所述对大家Python程序设计有所扶植。

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

  1. bookstore.py…

Python之路:Python 底子(大器晚成),python之路幼功

一、第一句Python代码

在 /home/dev/ 目录下创造 hello.py 文件,内容如下:

print "hello,lenliu"

执行 hello.py 文件,即: python hello.py

python内部执行进程如下:

图片 1

二、解释器

上一步中进行 python hello.py 时,显明的建议 hello.py 脚本由 python
解释器来实践。

假使想要肖似于实践shell脚本相仿实行python脚本,例:
./hello.py,那么就先要有实施权限,再 hello.py
文件的尾部钦点解释器,如下:

#!/usr/bin/env python

print "hello,world"

如此一来,试行: ./hello.py 即可。

ps:给与 hello.py 试行权限,chmod 755 hello.py

三、内容编码

python解释器在加载 .py 文件中的代码时,会对剧情举办编码(私下认可ascill)

ASCII(American Standard Code for Information
Interchange,米利坚专门的学问音讯交流代码)是基于拉丁字母的风流倜傥套计算机编码系统,首要用于展示今世Hungary语和其余西欧语言,其最多只好用
8 位来代表(一个字节),即:2**8 = 256,所以,ASCII码最三只可以表示 2六二十个标记。

图片 2

图片 3

眼看ASCII码不能够将世界上的各类文字和标识全部代表,所以,就须要新出生龙活虎种能够表示享有字符和标志的编码,即:Unicode

Unicode(统风流倜傥码、万国码、单风流浪漫码)是生机勃勃种在微机上选拔的字符编码。Unicode
是为着缓慢解决古板的字符编码方案的受制而发生的,它为各个语言中的各个字符设定了统生机勃勃而且唯后生可畏的二进制编码,规定虽有的字符和标记起码由
16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是起码2个字节,也许越来越多

UTF-8,是对Unicode编码的滑坡和优化,他不再选用起码使用2个字节,而是将有着的字符和符号进行分类:ascii码中的内容用1个字节保存、南美洲的字符用2个字节保存,南亚的字符用3个字节保存…

故而,python解释器在加载 .py
文件中的代码时,会对故事情节开展编码(暗中同意ascill),假若是之类代码的话:

报错:ascii码不可能代表粤语

#!/usr/bin/env python

print "你好,lenliu"  

改善:应该显得的报告python解释器,用哪些编码来试行源代码,即:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

print "你好,lenliu"

四、注释

  当行注视:# 被讲明内容

  多行注释:””” 被批注内容 “””

五、试行脚本传入参数

Python有雅量的模块,进而使得开荒Python程序极其简洁。类库有满含三中:

  • Python内部提供的模块
  • 标准开源的模块
  • 程序员本人花销的模块

Python内部提供三个 sys 的模块,当中的 sys.argv
用来捕获施行python脚本时传出的参数

ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码
七、变量
1、声明变量
#!/usr/bin/env python
# -*- coding: utf-8 -*-
name = "lenliu"
上述代码声明了一个变量,变量名为: name,变量name的值为:"lenliu"

变量的意义:小名,其代指内部存款和储蓄器里有个别地方中保存的故事情节

#!/usr/bin/env python # -*- coding: utf-8 -*- name1 = “wupeiqi”
name2 = “lenliu”
name1 = “wupeiqi” name2 = name1

图片 4

八、输入

name = raw_input("请输入用户名:")      # 将用户输入的内容赋值给 name 变量 
print name                            # 打印输入的内容 

输入密码时想要不可见,需要利用getpass 模块中的 getpass方法,即:

 

import getpass
pwd = getpass.getpass("请输入密码:")  
print pwd

九、流程序调整制和缩进

急需生机勃勃、顾客登入验证

# 提示输入用户名和密码
# 验证用户名和密码
# 如果错误,则输出用户名或密码错误
# 如果成功,则输出 欢迎,XXX!

#!/usr/bin/env python
# -*- coding: encoding -*-

import getpass
name = raw_input('请输入用户名:')
pwd = getpass.getpass('请输入密码:')

if name == "lenliu" and pwd == "cmd":
 print "欢迎,lenliu!"
else:
 print "用户名和密码错误"

须求二、遵照顾客输入内容输出其权力

# 根据用户输入内容打印其权限
# lenliu --> 超级管理员
# amy --> 普通管理员
# 其他 --> 普通用户

#!/usr/bin/env python
# -*- coding: encoding -*-

name = raw_input('请输入用户名:')

if name == "lenliu":
 print "超级管理员"
elif name == "amy":
 print "普通管理员"
else:
 print "普通用户"

PS:外层变量,能够被内层变量使用,但内层变量,无法被外层变量使用

十、初识基本数据类型

1、数字

int(整型)

  在叁九人机器上,整数的位数为三12人,取值范围为-2**31~2**31-1,即-2147483648~2147483647
  在69个人系统上,整数的位数为62位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807

long(长整型)   跟C语言不一样,Python的长整数未有一点点名位宽,即:Python未有限制长整数数值的尺寸,但实则由于机械内部存款和储蓄器有数,大家运用的长整数数值不恐怕无限大。
  注意,自从Python2.2起,假诺整数产生溢出,Python会自动将整数数据转变为长整数,所以以往在长整数数据背后不加字母L也不会变成严重后果了。
float(浮点型)   浮点数用来拍卖实数,即含有小数的数字。相似于C语言中的double类型,占8个字节(六九人),此中57位表示底,11个人表示指数,剩下的一人代表符号。

     
PS:3.23和52.3E-4是浮点数的例证。E标识表示10的幂。在此边,52.3E-4表示52.3
* 10-4
complex(复数)
  复数由实数部分和虚数部分组成,经常格局为x+yj,个中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都以实数。

      PS:(-5+4j卡塔尔(قطر‎和(2.3-4.6j卡塔尔(英语:State of Qatar)是复数的例证

注:Python中留存小数字池:-5 ~ 257

2、布尔值

  真或假 (1 或 0)

3、字符串

     “lenliu”

万恶的字符串拼接:

  python中的字符串在C语言中反映为是多个字符数组,每一次创立字符串时候必要在内部存款和储蓄器中开垦一块三番若干遍的长空,而且只要供给改正字符串的话,就供给再行开拓空间,万恶的+号每现身叁次就能够在内从当中重新开辟一块空间。

字符串格式化

name = "lenliu"
print "I am %s " % name

输出: I am lenliu

PS: 字符串是 %s    整数 %d    浮点数%f

字符串常用作用:

     移除空白、分割、长度、索引、切块

4、列表

创办列表:

name_list = ['lenliu', 'seven']   或
name_list = list(['lenliu', 'seven'])
基本操作:

     索引、切片、追加、删除、长度、切片、循环、包含

5、元祖 (无法改改和删除)

创制元祖:

ages = (11, 22, 33, 44, 55)  或
ages = tuple((11, 22, 33, 44, 55))

基本操作:

    索引、切片、循环、长度、包含

6、字典(无序)

创办字典:

person = {"name": "lenliu", 'age': 18}   或
person = dict({"name": "lenliu", 'age': 18})
常用操作:

  索引、新增、删除、键、值、键值对、循环、长度

PS:循环,range,continue 和 break

十一、运算

算数运算:

图片 5

相比运算:

图片 6

赋值运算:

图片 7

逻辑运算:

图片 8

分子运算:

图片 9

身价运算:

图片 10

位运算:

图片 11

#!/usr/bin/python

a = 60            # 60 = 0011 1100 
b = 13            # 13 = 0000 1101 
c = 0

c = a & b;        # 12 = 0000 1100
print "Line 1 - Value of c is ", c

c = a | b;        # 61 = 0011 1101 
print "Line 2 - Value of c is ", c

c = a ^ b;        # 49 = 0011 0001
print "Line 3 - Value of c is ", c

c = ~a;           # -61 = 1100 0011
print "Line 4 - Value of c is ", c

c = a << 2;       # 240 = 1111 0000
print "Line 5 - Value of c is ", c

c = a >> 2;       # 15 = 0000 1111
print "Line 6 - Value of c is ", c

运算符优先级:

图片 12

更多内容:

十三、初识文本的基本操作

开垦文件:

  file_obj = file(“文件路线”,”方式”卡塔尔(英语:State of Qatar)  或 file_obj =
open(“文件路线”,”形式”卡塔尔

打开文件的形式有:

  • r,以只读方式展开文件
  • w,展开贰个文本只用于写入。若是该公文已存在则将其遮住。倘使该文件不真实,成立新文件。
  • a,展开五个文件用于扩大。借使该文件已存在,文件指针将会放在文件的末段。约等于说,新的内容将会被写入到本来就有内容之后。假若该公文不设有,制造新文件举行写入。
  • w+,展开三个文件用于读写。借使该公文已存在则将其遮住。假使该文件子虚乌有,创立新文件。

读取文件的开始和结果:

obj.read()         # 一次性加载所有内容到内存 

obj.readlines()    # 一次性加载所有内容到内存,并根据行分割成字符串 

for line in obj:   # 每次仅读取一行数据 
  print line

写文件的剧情:

obj.write('内容')

闭馆文件句柄:

obj.close()

 



友情链接:http://www.cnblogs.com/wupeiqi/articles/4906230.html  武sir

底工(生龙活虎),python之路底工生机勃勃、第一句Python代码 在 /home/dev/ 目录下创办 hello.py 文件,内容如下:
print “hello,lenliu” 推行…

Python生成随机密码,python生成

自身  python生手,使用的意况是python2.7,勿喷

复制代码 代码如下:
# -*- coding:utf8 -*-
import random
import string
import sys
reload(sys)
sys.setdefaultencoding(“utf8”)
def random_number():
    pwnumber=input(“请输入供给密码个数:”卡塔尔
    pwlength=input(“请输入要求密码长度:”卡塔尔(قطر‎
    if  pwlength<=10:
        for i in range(pwnumber):
           
number=string.join(random.sample(string.digits+string.letters,pwlength)).replace(‘
‘,”)
            print number
    else :
        print “近日只帮忙12个人以下密码,请重试!!”
        random_number()
if __name__==”__main__”:
    random_number()

如上正是本文的全体内容了,希望对咱们学习python能够具有利于。

本身python新手,使用的情状是python2.7,勿喷 复制代码 代码如下: # -*-
coding:utf8 -*- import random import string impo…

1.选拔xslt样式,这样能够很好的和xml结合,做出能够的告诉

2.生成xml结构

 

xslt样式是个很有意思,也很苍劲的,现在用的超多,很便利就会做出三个美好的告诉,能够百度时而,语法至极轻便,跟写html大致的.

在这里处能够定制好,我们要生成告诉,是怎么样体统的,然后在从xml获取数据.

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
 <html>
 <Head>
        <style type="text/css">

          body {
          background:#fff;
          margin:0;
          padding:40px 20px;
          font-family: "Arial", Arial, Sans-serif;
          font-size: 16px;
          color:#000;
          }

          table {
          margin:5px 5px 0;
          border:0px solid #222;
          font-size: 0.8em;
          }

          td {
          margin:5px 5px 0;
          padding:10px 10px 10px 10px;
          vertical-align:text-top;
          border:1px solid #222;
          border-width:1px 1px 1px 1px;
          }

          td.light {
          border:0px solid #222;
          }

          td.number {
          text-align:right;
          }

          td.status {
          text-align:right;
          vertical-align:text-bottom;
          }

        </style>


 </Head>
 <body>
   <!--OVER RESULT -->
   <xsl:variable name="OVER_STATUS" select="REPORT/OVER_STATUS"/>
   <xsl:variable name="STATUS" select="REPORT/LOG_ENTRY/STATUS"/>



   <h2>自动化测试执行报告</h2>
   <!--table -->
   <table border="1">
     <!--all result value-->
     <tr bgcolor="white" height = "35">
        <td>Overall Test Result</td>
        <td><xsl:value-of select="$OVER_STATUS"/></td>
        <td colspan="2"> </td>
     </tr>

     <tr bgcolor="#D8BFD8" height = "35">
       <th>执行时间</th>
       <th>单步结果</th>
       <th>响应CODE</th>
       <th>Response信息</th>
     </tr>



       <!--select font color -->
       <xsl:variable name="fontColor">
           <xsl:choose>
               <xsl:when test="$STATUS = FAILED or $STATUS = PASSED">
                   <xsl:text>white</xsl:text>
               </xsl:when>
               <xsl:otherwise>black</xsl:otherwise>
           </xsl:choose>
       </xsl:variable>

       <!--background color-->
       <xsl:variable name="backgroundColor">
           <xsl:choose>
               <xsl:when test="$STATUS = 'FAILED'">
                   <xsl:text>rgb(255,0,0)</xsl:text>
               </xsl:when>
               <xsl:when test="$STATUS = 'PASSED'">
                   <xsl:text>rgb(60,179,113)</xsl:text>
               </xsl:when>
               <xsl:otherwise>
                   <xsl:text>white</xsl:text>
               </xsl:otherwise>
           </xsl:choose>
       </xsl:variable>

       <!--log entry-->
       <xsl:for-each select = "REPORT/LOG_ENTRY">


           <tr>
               <td><xsl:value-of select="EXECUTION_TIME"/></td>
               <td bgcolor="{$backgroundColor}"><xsl:value-of select="STEP_RESULT"/></td>
               <td><xsl:value-of select="COMPONENT_NAME"/></td>
               <td><xsl:value-of select="STEP_DESCRIPTION"/></td>
           </tr>
       </xsl:for-each>

       <tr bgcolor="white">
           <font color="{$fontColor}">
               <td colspan="4">Overall Test Result:<xsl:value-of select="$OVER_STATUS"/></td>
           </font>
       </tr>
   </table>
 </body>
 </html>
</xsl:template>
</xsl:stylesheet>

xml是要规行矩步,xslt定制的构造进行更动,或然换句话说,xslt样式要依照xml结构去做

xml结构

REPORT/LOG_ENTRY

REPORT下OVER_STATUS节点,那么些是任何报告的结果,独有当所有规行矩步为passed时才会为passed

每个LOG_ENT路虎极光Y节点,代表生龙活虎行数据

包括:

STATUS单行数据实施情状

EXECUTION_TIME实行时间

STEP_RESULT单步实践结果

COMPONENT_NAME组件名称,

STEP_DESCRubiconIPTION步骤描述

 

道理当然是那样的那一个都得以自已定义,可以和睦扩张或收缩,然则xslt表中也要相对应的扩大或回退

<?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet href="LOG.XSLT" type="text/xsl"?>
    <REPORT>
        <OVER_STATUS>PASSED</OVER_STATUS>
        <LOG_ENTRY>
            <STATUS>FAILED</STATUS>
            <EXECUTION_TIME>2017.06.15 15:57:16</EXECUTION_TIME>
            <STEP_RESULT>FAILED</STEP_RESULT>
            <COMPONENT_NAME>704</COMPONENT_NAME>
            <STEP_DESCRIPTION>{u'nextUrl': u'http://www.elong.com', u'message': u'\u9a8c\u8bc1\u7801\u9519\u8bef', u'code': u'704', u'success': False, u'isShowVerifyCode': True}</STEP_DESCRIPTION>
        </LOG_ENTRY>
        <LOG_ENTRY>
            <STATUS>FAILED</STATUS>
            <EXECUTION_TIME>2017.06.15 15:57:16</EXECUTION_TIME>
            <STEP_RESULT>FAILED</STEP_RESULT>
            <COMPONENT_NAME>704</COMPONENT_NAME>
            <STEP_DESCRIPTION>{u'nextUrl': u'http://www.elong.com', u'message': u'\u9a8c\u8bc1\u7801\u9519\u8bef', u'code': u'704', u'success': False, u'isShowVerifyCode': True}</STEP_DESCRIPTION>
        </LOG_ENTRY>
    </REPORT>

 

上面上,生成xml的python代码,这几个成立xml布局就很简短了.

应用xml.dom.minidom就足以了,通晓多少个要点超轻便就创办一个xml

1,创设三个xml文书档案

import xml.dom.minidom as xmlDoc  #xmlDoc起的别名

xmldoc = xmlDoc.Document

 

2.因为我们要利用xslt样式,所以呢.

创建的xml第生机勃勃行是xml头    <?xml version=”1.0″ encoding=”utf-8″?>
那样python暗中认可已经有了,就毫无大家创建了,那么

其次行,大家要写样式头 <?xml-stylesheet href=”LOG.XSLT”
type=”text/xsl”?>   头中写了援引相通目录下的LOG.XSLT ,类型TEXT/XSL

要留意一点href属性不要写成这么D:\demo\LOG.XSLT
那样写会有标题,只要把那几个文件和xml放在同等目录就好了.

            #xml样式
            xlstNode = xmlD.createProcessingInstruction("xml-stylesheet","href=\"LOG.XSLT\" type=\"text/xsl\"")
            xmlD.appendChild(xlstNode)

3.开立一个REPORT根节点,你也得以起名ROOT,叫什么名字看你和煦了

开创节点用,createElement,之后用appendChild扩大节点到xml对象

            report = xmlD.createElement('REPORT')
            xmlD.appendChild(report)

4.自此创建别的节点,相通用createElement,可是只要节点下要追加内容要用xmlDoc.createTextNode(‘passed’卡塔尔(英语:State of Qatar)

以下代码意思是:创造三个over_status的节点,节点文本为passed,然后,将此节点增至根节点REPORT下

            overStatus = xmlD.createElement('OVER_STATUS')
            overStatus.appendChild(xmlD.createTextNode('PASSED'))
            report.appendChild(overStatus)

 图片 13

有以上4点,基本创立贰个xml寻常了.

 

 

 生成xml具体python代码:

以下代码创造根节点做为了贰个单身的函数,之所以这么做因为要扭转的报告,只开创二个根节点,和over_status
结果意况

任何累积的行放在了节点LOG_ENTHighlanderY下,多少个根节点下可以有多少个LOG_ENTRY节点……..一个LOG_ENTCR-VY节点代码少年老成行数据进行理并了结果

#*_*coding:utf-8*_*

import xml.dom.minidom as xmlDoc
import os
import gl
import sys



class cREPORTXML(object):
    def __init__(self):
        self.__struct = self.createReportNode()

    #创建report节点
    def createReportNode(self):
        try:
            xmlD = xmlDoc.Document()

            #xml样式
            xlstNode = xmlD.createProcessingInstruction("xml-stylesheet","href=\"LOG.XSLT\" type=\"text/xsl\"")
            xmlD.appendChild(xlstNode)

            report = xmlD.createElement('REPORT')
            xmlD.appendChild(report)

            overStatus = xmlD.createElement('OVER_STATUS')
            overStatus.appendChild(xmlD.createTextNode('PASSED'))
            report.appendChild(overStatus)

            returnResult = []
            returnResult.append(xmlD)
            returnResult.append(report)
        except Exception,ex:
            return ex.message
        return returnResult


    def writeReport(self,execTime,stepResult,comName,stepDisc):
        #reportNodeList = self.createReportNode()

        entry = self.createLogEntry(self.__struct[0],execTime,stepResult,comName,stepDisc)
        self.__struct[1].appendChild(entry)
        self.writeXml(self.__struct[0],gl.reporterPath+'reportxml.xml')
        #self.writeXml(self.__struct[0],gl.reporterPath+'reportxml_%s.xml'%(gl.curTimeStr))
 #-------------创建xml格式-有多个相同的节点,并且该节点下有4个名称相同的子节点----------------
    def createLogEntry(self,docObj,executeTime,stepResult,componentName,stepDiscription):
        entry = docObj.createElement("LOG_ENTRY")

        status = docObj.createElement("STATUS")
        nodeExecuteTime = docObj.createElement("EXECUTION_TIME")
        nodeStepResult = docObj.createElement("STEP_RESULT")
        nodeComponentName = docObj.createElement("COMPONENT_NAME")
        nodeStepDiscription = docObj.createElement("STEP_DESCRIPTION")

        status.appendChild(docObj.createTextNode(stepResult))
        nodeExecuteTime.appendChild(docObj.createTextNode(executeTime))
        nodeStepResult.appendChild(docObj.createTextNode(stepResult))
        nodeComponentName.appendChild(docObj.createTextNode(componentName))
        nodeStepDiscription.appendChild(docObj.createTextNode(stepDiscription))

        entry.appendChild(status)
        entry.appendChild(nodeExecuteTime)
        entry.appendChild(nodeStepResult)
        entry.appendChild(nodeComponentName)
        entry.appendChild(nodeStepDiscription)
        return entry


    #参数,xml对象,准备存储xml文件路径,文件模式:读 and 写 (r and w)
    def writeXml(self,xmlDoc,xmlPath):
        f = open(xmlPath,"w")
        xmlDoc.writexml(f,indent='\t', addindent='\t', newl='\n', encoding="utf-8") #中间的加了一些格式符,这样生成的xml自动对齐格式
        f.close()




if __name__=='__main__':
    reportx =cREPORTXML()
    print  reportx.writeReport('20170602','PASSED','1-SETTEXT','AUTOMATION TEST')
    print  reportx.writeReport('20170606','FIELD','2-SETTEXT','AUTOMATION TEST')

 

 用ie打开xml报告,当然能够见到计算果显示有一点点难点,那几个不影响报告称,代码中拍卖一下就好.

简言之的告知就水到渠成了,追求完美的能够在细化一下,扩张一些其余消息,调治一下颜色.

图片 14

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图