python中字符串转xml对象_Python-Json字符串和XML解析
Python-json字符串和xml解析
JSON:JavaScript Object Notation(JavaScript 对象表示法)
JSON是存储和交换文本信息的语法,类似XML
JSON比XML更小,更快,更易解析。
1、JSON语法与语法规则
JSON语法是JavaScript语法的子集。
JSON语法是JavaScript对象表示语法的子集。
数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
1.1:JSON对象
JSON对象是保存在花括号中的。对象可以包含多个名称/值对。例如
{ "firstName":"John" , "lastName":"Doe" }
这等价于JavaScript语句:
firstName=”Jonh”
lastname=”Doe”
1.2:JSON数组
JSON数组是保存在方括号[]中的。数组可以包含多个对象。例如
{
“employees”:[
{“firstName”:”John”,”lastName”:”Doe”},
{“firstName”:”Anna”,”lastName”:”Smith”},
{“firstName”:”Petter”,”lastName”:”Jones”}
]
}
在上述例子中,数组”employees”包含三个对象,每一个对象代表一条记录
2、Python操作JSON
Python2.6开始加入了json模块,Python的json模块系列化和反序列化分别是dumps和loads。对简单的数据类型可以直接处理,如:string,Unicode,int,float,list,tuple,dict
json.dumps():将一个Python对象编码成JSON字符串。
json.loads():将JSON格式字符串解码成Python对象。
2.1:Json编码
使用json.dumps()方法来将一个Python数据类型列表编码成json格式的字符串
#coding=utf-8
import json
a = [{1:12, 'a':12.3}, [1,2,3], (1,2), 'asd', u'ad',12,13L,3.3,True,False,None]
print u"Python类型:\n", a
print u"编码后的json串:\n",json.dumps(a)
#执行结果
E:\>python 0328test.txt
Python类型:
[{'a': 12.3, 1: 12}, [1, 2, 3], (1, 2), 'asd', u'ad', 12, 13L, 3.3, True, False,None]
编码后的json串:
[{"a": 12.3, "1": 12}, [1, 2, 3], [1, 2], "asd", "ad", 12, 13, 3.3, true, false,null]
观察打印结果,会发现Python对象被转换成JSON字符串之后,跟原始的输出结果相比有一些特殊的变化;在json编码的过程中,会存在从Python原始类型转化为json类型的过程,这两种语言的类型存在一些差异
2.2:json.dumps()
函数原型:
dumps(obj,skipkeys=False,ensure_ascii=True,check_circular=True,allow_nan=True,cls=None,indent=None,separators=None,encoding='utf-8',d
efault=None,sort_keys=False,**kw)
该方法返回编码后的一个json字符串,是一个str对象encodedjson
dumps函数的参数非常的多,常用参数介绍如下:
sort_keys:是否按字典排序(a-z)输出,默认为False,默认编码成json格式字符串后是紧凑输出,并且也没有顺序,不利于可读。示例如下:
#coding=utf-8
import json
a = [{"a":"A", "b":(2,3),"c":3.0}]
print json.dumps(a)
print json.dumps(a,sort_keys=True)
#执行结果
E:\>python 0328test.txt
[{"a": "A", "c": 3.0, "b": [2, 3]}]
[{"a": "A", "b": [2, 3], "c": 3.0}]
indent:设置参数缩进的空格数。缩进显示 使读起来更加清晰。例如:
#coding=utf-8
import json
a = [{"a":"A", "b":(2,3),"c":3.0}]
print json.dumps(a)
print json.dumps(a,sort_keys=True,indent=4)
#执行结果
E:\>python 0328test.txt
[{"a": "A", "c": 3.0, "b": [2, 3]}]
[
{
"a": "A",
"b": [
2,
3
],
"c": 3.0
}
]
separators:中文意思:分离器;参数的作用是去掉逗号”,”和分号”;”后面的空格,为了美化输出结果,在输出数据时逗号和分号后面都有空格,但是在传输数据的过程中越精简越好,就可以使用separators对传输的json串进行压缩。该参数是元组格式的,例如:
#coding=utf-8
import json
a = [{"a":"A", "b":(2,3),"c":3.0}]
print json.dumps(a)
print json.dumps(a,separators=(",",";"))
#执行结果
E:\>python 0328test.txt
[{"a": "A", "c": 3.0, "b": [2, 3]}]
[{"a";"A","c";3.0,"b";[2,3]}] #明显有了缩短
skipkeys:在encoding过程中,dict对象的key只可以是基本数据类型(str,Unicode,int,long,float,bool,None),如果是其他类型,那么在编码过程中就会抛出TypeError的异常。skipkeys可以跳过那些非string对象key的处理,就是不处理。例如:
#coding=utf-8
import json
data= [ { 'a':'A', 'b':(2, 4), 'c':3.0, (1,2):'D tuple' } ]
print u"不设置skipkeys参数"
try :
res1 = json.dumps(data) #skipkeys参数默认为False时
except Exception,e:
print e
print u"设置skipkeys参数"
print json.dumps(data,skipkeys=True) # skipkeys=True时
#执行结果
E:\>python 0328test.txt
不设置skipkeys参数
keys must be a string
设置skipkeys参数
[{"a": "A", "c": 3.0, "b": [2, 4]}]
ensure_ascii:表示编码使用的字符集,默认是True,表示使用ascii码进行编码。如果设置为False,就会以Unicode进行编码。由于解码json字符串时返回的就是Unicode字符串,所以可以直接操作Unicode字符,然后直接编码Unicode字符串,这样会简单些
2.3:Jsoon解码json.loads()
将json格式字符串解码成Python对象,使用json.loads()函数,可以将简单数据类型解码成Python对象,例如
#coding=utf-8
import json
a = [{1:12, 'a':12.3}, [1,2,3], (1,2), 'asd', u'ad', 12, 13L, 3.3, True, False, None]
print u"编码后\n", json.dumps(a)
print u"解码后\n", json.loads(json.dumps(a))
#执行结果
E:\>python 0328test.txt
编码后
[{"a": 12.3, "1": 12}, [1, 2, 3], [1, 2], "asd", "ad", 12, 13, 3.3, true, false, null]
解码后
[{u'a': 12.3, u'1': 12}, [1, 2, 3], [1, 2], u'asd', u'ad', 12, 13, 3.3, True, False, None]
Json格式的字符串解码成Python对象以后,String类型都变成了Unicode类型,数组变成了list,不会回到原来的元组类型,字典key的字符类型也被转成Unicode类型。从json到Python的类型转化
2.4:将类对象编码成json串
Python中的dict对象可以直接序列化为json的{},但是很多时候,可能用class表示对象,比如定义Animals类,然后直接去系列化就会报错。因为类不是一个可以直接序列化的对象,我们需要用dumps()函数中的default参数来实现。
#coding=utf-8
import json
class Animals(object):
def __init__(self,name,sex,weight):
self.name=name
self.sex=sex
self.weight=weight
#将序列化函数定义到类里面
def obj_json(self,obj_instance):
return{
"name":obj_instance.name,
"sex":obj_instance.sex,
"weight":obj_instance.weight}
#实例化
D=Animals("dog","man","30kg")
print json.dumps(D,default=D.obj_json)
#执行结果
E:\>python py.txt
{"name": "dog", "weight": "30kg", "sex": "man"}
相对于上面这种方法,还有一种更为简单的方法,通常class及其实例都会有一个__dict__属性(除非类中添加了__slots__属性),它是一个dict类型,存储的是类或者类实例中有效的属性。
#coding=utf-8
import json
class Animals(object):
def __init__(self,name,sex,weight):
self.name=name
self.sex=sex
self.weight=weight
#将序列化函数定义到类里面
def obj_json(self,obj_instance):
return{
"name":obj_instance.name,
"sex":obj_instance.sex,
"weight":obj_instance.weight}
#实例化
D=Animals("dog","man","30kg")
print D.__dict__
print json.dumps(D,default=lambda Animals:Animals.__dict__)
print json.dumps(D,default=lambda D:D.__dict__)
执行结果
E:\>python py.txt
{'name': 'dog', 'weight': '30kg', 'sex': 'man'}
{"name": "dog", "weight": "30kg", "sex": "man"}
{"name": "dog", "weight": "30kg", "sex": "man"}
2.4:将Json反序列化为类对象
json串反序列化成类对象或类的实例,使用的是loads()方法中的object_hook参数来实现。
#coding=utf-8
import json
class Animals(object):
def __init__(self,name,sex,weight):
self.name=name
self.sex=sex
self.weight=weight
#实例化
D=Animals("dog","man","30kg")
def JsonToClass(D):
return Animals(D["name"],D["sex"],D["weight"])
json_str='{"name":"cat","sex":"woman","weight":"5kg"}'
d=json.loads(json_str,object_hook=JsonToClass)
print d
print d.name
#执行结果
E:\>python py.txt
cat
3、Xml
XML指可扩展标记语言(Extensible Markup Language)
XML被设计用于结构化、存储和传输数据
XML是一种标记语言,很类似于HTML
XML没有像HTML那样具有预定义标签,需要程序员自己定义标签
XML被设计为具有自我描述性,并且是W3C的标准
3.1:XML文档(树结构)
XML文档形成了一种树结构,他从“根部”开始,然后扩展到“树枝”。
XML文档必须包含根元素,该元素是所有其他元素的父元素,文档中的所有元素形成了一颗文档树,这棵树从根开始,扩展到树的最顶端,并且所有的元素都可以有子元素。
父元素拥有子元素,相同层级上的子元素成为同胞(兄弟或姐妹)。
XML中所有元素都可以有文本内容和属性,类似于HTML。
....
3.2:XML元素&语法规则
XML的元素是指从开始标签直到结束标签的部分(均包括开始结束)。
一个元素可以包含:其他元素、文本、属性
所有的XML元素都必须有一个开始标签和结束标签,省略结束标签是非法的,如
content
XML标签对大小写敏感,区分大小写,比如,下面是两个不同的标签
this is a test1
this is a test2
XML文档必须有根元素。如:
this is a test2
joy
XML必须正确嵌套,父元素必须完全包住子元素
XML属性值必须加引号,元素的属性值都是一个键值对形式,如
注意:book元素中的属性category的值是python必须用引号引起来,使用单引号和双引号都可以,但是如果属性值本身包含双引号,外层就必须使用单引号;但如果包含了单引号,外层必须使用双引号
3.2.1:XML命名规则
名称可以包含字母、数字和其他字符
名称不能以数字或者标点符号开头
名称不能以字母xml或者XML开始
名称不能包含空格
可以使用任何名称,没有保留字
名称应该具有描述性,简短和简单,可以同时使用下划线
避免使用“-”“.”“:”等字符
XML注释格式为:
3.2.2:CDATA
CDATA(Unparsed Character Data)指的是不应由Xml解析器进行解析的文本数据,因为Xml解析器会将”
CDATA固定语法格式:,如下示例
function test(x, y)
{ if (x < 0 && y < 0) then
{
return 0;
}
else
{
return 1;
}}
]]>
注意:CDATA部分不能包含字符串”]]>”,并且]]>之间不能有空格或者折行等支付,如果包含了,会以为是CDATA的结束。也不允许嵌套CDATA部分
3.3:Python解析XML三种方法
1.SAX(simple API for XML):python标准库中包含SAX解析器,SAX使用的是事件驱动模型,通过在解析XML过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。
解析基本过程:读到一个XML开始标签,就会开始一个事件,然后事件就会调用一系列的函数去处理一些事情,当读到一个结束标签时,就会触发另一个事件,所以如果XML文档有格式错误的话,解析就会出错。这是一种流式处理,一边读一边解析,速度比较快,占用内存少,但是需要用户实现回调函数(handler)
2.DOM(Document Object Model):DOM,他是以对象树来表示一个XML文档的方法,使用它的好处就是你可以非常灵活的在对象中进行遍历。将XML数据在内存中解析成一个树,通过对树的操作来操作XML。由于DOM是将XML读取到内存,然后解析成一个树,一般比较慢,而且比较消耗内存,所以DOM一般偏向于处理一些小的XML,如配置文件
3.ElementTree(Object Model):ElementTree就像一个轻量级的DOM,具有方便而友好的API。代码的可用性好、速度快,消耗内存少,可以认为是对DOM的改进。
3.3.1使用xml.dom解析xml
#XML文档内容movie.xml
"""
War, Thriller
DVD
2003
PG
10
Talk about a US-Japan war
Anime, Science Fiction
DVD
1989
R
8
A schientific fiction
Anime, Action
DVD
4
PG
10
Vash the Stampede!
Comedy
VHS
PG
2
Viewable boredom
"""
minidom.parse(parser=None,bufsize=None):此函数的作用是使用parse解析器打开xml文档,并将其解析为DOM文档,也就是内存中的一棵树,并得到这个DOM对象。
#coding=utf-8
#从xml.dom.minidom模块引入解析器parse
from xml.dom.minidom import parse
import xml.dom.minidom
#minidom解析器打开xml文档并将其解析为内存中的一棵树
DOMTree= xml.dom.minidom.parse(r"e:\movie.xml")
print type(DOMTree)
执行结果
E:\>python py.txt
doc.documentElement:获取XML文档对象,就是拿到DOM树的根。
#coding=utf-8
#从xml.dom.minidom模块引入解析器parse
from xml.dom.minidom import parse
#minidom解析器打开xml文档并将其解析为内存中的一棵树
DOMTree= parse(r"e:\movie.xml")
#获取XML文档对象,也就是树的根节点
collection=DOMTree.documentElement
print collection
执行结果
E:\>python py.txt
doc.toxml(encoding=None):获取XML文档函数,返回xml的文本内容
#coding=utf-8
#从xml.dom.minidom模块引入解析器parse
from xml.dom.minidom import parse
#minidom解析器打开xml文档并将其解析为内存中的一棵树
DOMTree= parse(r"e:\movie.xml")
#获取XML文档对象,也就是树的根节点
collection=DOMTree.documentElement
print u"DOM树的根对象:",collection
print u"xml文档内容:\n",DOMTree.toxml()
执行结果:
hasAttribute(name):判断某个节点node是否存在某个属性,存在则返回True,否则返回False。
#coding=utf-8
#从xml.dom.minidom模块引入解析器parse
from xml.dom.minidom import parse
#minidom解析器打开xml文档并将其解析为内存中的一棵树
DOMTree= parse(r"e:\movie.xml")
#获取XML文档对象,也就是数的根节点
collection=DOMTree.documentElement
print u"DOM树的根对象:",collection
if collection.hasAttribute("type"):
#判断根节点collection是否存在type属性
print u"collection元素存在type属性"
else:
print u"collection元素不存在type属性"
执行结果
E:\>python py.txt
DOM树的根对象:
collection元素不存在type属性
node.getAttribute(attname):获取节点node的某个属性的值
#coding=utf-8
#从xml.dom.minidom模块引入解析器parse
from xml.dom.minidom import parse
#minidom解析器打开xml文档并将其解析为内存中的一棵树
DOMTree= parse(r"e:\movie.xml")
#获取XML文档对象,也就是数的根节点
collection=DOMTree.documentElement
print u"DOM树的根对象:",collection
if collection.hasAttribute("shelf"):
print u"DOM树的根节点属性:",collection.getAttribute("shelf")
"""
执行结果
E:\>python py.txt
DOM树的根对象:
DOM树的根节点属性: New Arrivals
"""
node.getElementsByTagName(name):获取XML文档中某个父节点下具有相同节点名称的节点对象集合,是一个list对象。
#coding=utf-8
#从xml.dom.minidom模块引入解析器parse
from xml.dom.minidom import parse
#minidom解析器打开xml文档并将其解析为内存中的一棵树
DOMTree= parse(r"e:\movie.xml")
#获取XML文档对象,也就是数的根节点
collection=DOMTree.documentElement
print u"DOM树的根对象:",collection
#获取根节点collection下所有movie节点的list集合
movies=collection.getElementsByTagName("movie")
print movies
for i in movies:
print i
"""
执行结果
E:\>python py.txt
DOM树的根对象:
[, , , ]
"""
node.childNodes:返回节点node下所有子节点组成的list。
#coding=utf-8
#从xml.dom.minidom模块引入解析器parse
from xml.dom.minidom import parse
#minidom解析器打开xml文档并将其解析为内存中的一棵树
DOMTree= parse(r"e:\movie.xml")
#获取XML文档对象,也就是数的根节点
collection=DOMTree.documentElement
print u"DOM树的根对象:",collection
#获取根节点collection下所有movie节点的list集合
movies=collection.getElementsByTagName("movie")
print movies[0].childNodes
执行结果
node.childNodes[index].data:获取节点node的文本值,即标签之间的内容。
#coding=utf-8
#从xml.dom.minidom模块引入解析器parse
from xml.dom.minidom import parse
#minidom解析器打开xml文档并将其解析为内存中的一棵树
DOMTree= parse(r"e:\movie.xml")
#获取XML文档对象,也就是数的根节点
collection=DOMTree.documentElement
print u"DOM树的根对象:",collection
#获取根节点collection下所有movie节点的list集合
Movies=collection.getElementsByTagName("movie")
print u"共有%s部电影"%Movies.length
#获取根节点collection下第一个movie节点下所有stars节点的list集合
movies=Movies[0].getElementsByTagName("stars")
print u"第一部电影有%s个stars参数"%movies.length
print u"这个stars是:",movies[0].childNodes[0].data
"""
执行结果
E:\>python py.txt
DOM树的根对象:
共有4部电影
第一部电影有1个stars参数
这个stars是: 10
"""
node.haschildNodes():判断节点node下是否有叶子节点,如果有返回True,否则返回False;注意:每个节点都默认有一个文本叶子节点,所以只要标签后有值,就返回True,只有当标签后没有值并且也没有叶子节点时才会返回False。
#coding=utf-8
#从xml.dom.minidom模块引入解析器parse
from xml.dom.minidom import parse
#minidom解析器打开xml文档并将其解析为内存中的一棵树
DOMTree= parse(r"e:\movie.xml")
#获取XML文档对象,也就是数的根节点
collection=DOMTree.documentElement
print u"DOM树的根对象:",collection
#获取根节点collection下所有movie节点的list集合
Movies=collection.getElementsByTagName("movie")
print u"共有%s部电影"%Movies.length
#获取根节点collection下第一个movie节点下所有stars节点的list集合
if Movies[0].hasChildNodes():
print u"第一部电影存在叶子节点"
else:
print u"第一部电影不存在叶子节点"
"""
执行结果
E:\>python py.txt
DOM树的根对象:
共有4部电影
第一部电影存在叶子节点
"""
3.3.2使用xml.dom解析xml的完整实例
#coding=utf-8
#从xml.dom.minidom模块引入解析器parse
from xml.dom.minidom import parse
import xml.dom.minidom
#minidom解析器打开xml文档并将其解析为内存中的一棵树
DOMTree= xml.dom.minidom.parse(r"e:\movie.xml")
print type(DOMTree)
#获取XML文档的根节点
collection=DOMTree.documentElement
#判断根节点中是否有"shelf"属性,如果有则获取并打印
if collection.hasAttribute("shelf"):
print "root element:%s"%collection.getAttribute("shelf")
#获取所有电影getElementsByTagName()方法可返回带有指定标签名的对象的集合
movies=collection.getElementsByTagName("movie")
#print movies
"""
[, , ,
0x28e8848>]
"""
#打印每部电影的详细信息
for movie in movies:
print "*****Movie*****"
#获取并打印电影名称
if movie.hasAttribute("title"):
print "Title:%s"%movie.getAttribute("title")
#获取并打印每部电影的其他属性childNodes以Nodelist对象的形式返回节点的子节点集合
type = movie.getElementsByTagName('type')[0]
print "Type: %s" % type.childNodes[0].data
format = movie.getElementsByTagName('format')[0]
print "Format: %s" % format.childNodes[0].data
rating = movie.getElementsByTagName('rating')[0]
print "Rating: %s" % rating.childNodes[0].data
description = movie.getElementsByTagName('description')[0]
print "Description: %s" % description.childNodes[0].data
stars=movie.getElementsByTagName("stars")[0]
print "stars:%s"%stars.childNodes[0].data
if movie.getElementsByTagName("year"):
print "year:%s"%movie.getElementsByTagName("year")[0].childNodes[0].data
"""
执行结果
E:\>python py.txt
root element:New Arrivals
*****Movie*****
Title:Enemy Behind
Type: War, Thriller
Format: DVD
Rating: PG
Description: Talk about a US-Japan war
stars:10
year:2003
*****Movie*****
Title:Transformers
Type: Anime, Science Fiction
Format: DVD
Rating: R
Description: A schientific fiction
stars:8
year:1989
*****Movie*****
Title:Trigun
Type: Anime, Action
Format: DVD
Rating: PG
Description: Vash the Stampede!
stars:10
*****Movie*****
Title:Ishtar
Type: Comedy
Format: VHS
Rating: PG
Description: Viewable boredom
stars:2
"""
3.4:xml.dom创建XML文件
创建xml文件的步骤如下:
1、创建xml空文档
2、产生根对象
3、往根对象里加数据
4、把xml内存对象写到文件
3.4.1创建xml空白文档
minidom.Document():此方法用于创建一个空白的xml文档对象,并返回这个doc对象。每个xml文档都是一个Document对象,代表着内存中的DOM树。
>>> import xml.dom.minidom
>>> doc=xml.dom.minidom.Document()
>>> print doc
>>>
3.4.2创建xml文档根节点
doc.createElement(tagName):生成xml文档节点。参数表示要生成节点的名称。
>>> import xml.dom.minidom
>>> doc=xml.dom.minidom.Document()
>>> print doc
>>> root=doc.createElement("Managers")
>>> print u"添加的xml标签为:",root.tagName
添加的xml标签为: Managers
3.4.3添加节点属性
node.setAttribute(attname,value):此方法表示给节点添加属性值对。attname表示属性的名称,value表示属性的值
>>> import xml.dom.minidom
>>> doc=xml.dom.minidom.Document()
>>> print doc
>>> root=doc.createElement("Managers")
>>> print u"添加的xml标签为:",root.tagName
添加的xml标签为: Managers
>>> root.setAttribute("company","XX技术")
>>> value=root.getAttribute("company")
>>> print u"root元素的'company'属性值为:",value
root元素的'company'属性值为: XX技术
3.4.4添加文本节点
doc.createTextNode(data):给叶子节点添加文本节点。
>>> import xml.dom.minidom
>>> doc=xml.dom.minidom.Document()
>>> print doc
>>> root=doc.createElement("Managers")
>>> print u"添加的xml标签为:",root.tagName
添加的xml标签为: Managers
>>> root.setAttribute("company","XX技术")
>>> value=root.getAttribute("company")
>>> print u"root元素的'company'属性值为:",value
root元素的'company'属性值为: XX技术
>>> ceo=doc.createElement("CEO")
>>> ceo.appendChild(doc.createTextNode("pang"))
>>> print ceo.tagName
CEO
>>>
3.4.5添加子节点
doc/parentNode.appendChild(node):将节点node添加到文档对象doc作为文档树的根节点或者添加到父节点parentNode下作为其子节点。
#coding=utf-8
import xml.dom.minidom
#在内存中创建一个空的xml文档 Document对象
doc=xml.dom.minidom.Document()
#创建一个根节点school对象
root=doc.createElement("school")
#给根节点添加属性
root.setAttribute("name",u"学校信息")
#将根节点添加到文档对象中
doc.appendChild(root)
#给根节点添加一个叶子结点
school=doc.createElement(u"class")
#叶子节点下在嵌套叶子节点,并给节点添加文本节点
name=doc.createElement("schoolName")
name.appendChild(doc.createTextNode(u"北京大学附属中学"))
#将子节点name添加到根节点school中
school.appendChild(name)
teacher=doc.createElement("Teacher")
teacher.appendChild(doc.createTextNode(u"张三"))
school.appendChild(teacher)
#将school节点添加到父节点root中
root.appendChild(school)
#打印xml内容
print doc.toxml()
执行结果
E:\>python py.txt
<?xml version="1.0" ?>北京大学附属中
学张三
3.4.6生成XML文档
doc.writexml():函数原型writexml(write,indent=””,addindent=””,newl=””,encoding=None).此方法用于将内存中的xml文档树写入文件中,并保存到本地磁盘。
write:要写的目标文件的文件对象
indent:指明根节点缩进方式。
addindent:指明子节点的缩进方式
newl:针对新行,指明换行方式
enconding:指明所写xml文档的编码
#coding=utf-8
import xml.dom.minidom
import codecs
#在内存中创建一个空的xml文档 Document对象
doc=xml.dom.minidom.Document()
#创建一个根节点school对象
root=doc.createElement("school")
#给根节点添加属性
root.setAttribute("name",u"北京大学附属中学")
#将根节点添加到文档对象中
doc.appendChild(root)
#给根节点添加一个叶子结点
school=doc.createElement(u"class")
#叶子节点下在嵌套叶子节点,并给节点添加文本节点
name=doc.createElement("className")
name.appendChild(doc.createTextNode(u"三五班"))
#将子节点name添加到根节点school中
school.appendChild(name)
teacher=doc.createElement("Teacher")
teacher.appendChild(doc.createTextNode(u"张三"))
school.appendChild(teacher)
#将school节点添加到父节点root中
root.appendChild(school)
#写入文件
fp=codecs.open("e:\\school.xml","w","utf-8")
doc.writexml(fp,indent="",addindent="\t",newl="\n",encoding="utf-8")
fp.close()
python中字符串转xml对象_Python-Json字符串和XML解析相关推荐
- python中的不可变对象_python中的可变与不可变对象
什么是可变/不可变对象 不可变对象,该对象所指向的内存中的值不能被改变.当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址. ...
- python中一切都是对象_python中一切皆对象
众所周知python是一款面向对象语言,在python语言中,可以说python的一切皆对象是不会错的.如果你学过java的话,你也会知道java也是一款面向对象语言,但是对比起来,python才是真 ...
- python中怎么判断字母大小写_python判断字符串是字母 数字 大小写(转载)
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 今天遇到的字符串处理的问题,记录一下方便使用 str1 = input('请输入一个字符:') #初始化字符.数字.空格.特殊字符的计数 lowercas ...
- python中dumps和dump区别_python json.dumps() json.dump()的区别
之前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,以为这样有种把人骗进来的感受,因而又细化了一些.若是还有很差的地方,欢迎指出.python 首先说明基本功能:json dumps ...
- python中isdigit函数什么意思_python判断字符串,str函数isdigit、isdecimal、isnumeric的区别...
s为字符串 s.isalnum() 所有字符都是数字或者字母 s.isalpha() 所有字符都是字母 s.isdigit() 所有字符都是数字 s.islower() 所有字符都是小写 s.isup ...
- java处理json字符串_常见java对象转换为json字符串处理!!!
1.JSON简介 1. 概念: JavaScript Object NotationJavaScript对象表示法 Person p = new Person(); p.setName("张 ...
- struts2:JSON在struts中的应用(JSP页面中将对象转换为JSON字符串提交、JSP页面中获取后台Response返回的JSON对象)...
JSON主要创建如下两种数据对象: 由JSON格式字符串创建,转换成JavaScript的Object对象: 由JSON格式字符串创建,转换成JavaScript的List或数组链表对象. 更多关于J ...
- xml字符串转xml对象,xml对象转json对象
xml字符串转xml对象: function loadXml(str) {if (str == null) {return null;}var doc = str;try{doc = createXM ...
- js中自定义对象、json对象、json字符串、普通js对象 --js学习那本书上的
4.7 自定义对象 JS除了内置对象之外,还允许我们程序自己定义属于我们自己的对象,在JS中自定义对象的方式有2种:通过构造器创建对象,通过初始化器创建对象. 4.7.1 构造器创建对象(原生JS对象 ...
- js中自定义对象、json对象、json字符串、普通js对象
4.7 自定义对象 JS除了内置对象之外,还允许我们程序自己定义属于我们自己的对象,在JS中自定义对象的方式有2种:通过构造器创建对象,通过初始化器创建对象. 4.7.1 构造器创建对象(原生JS对象 ...
最新文章
- Delphi下使用指针的简单总结
- HBase Shell 的基本操作
- sql已经完成,生成表
- servlet和webservice+WEBservice 的本质。
- 【Flask】jinja2过滤器的使用
- c++ 中文乱码_Visual Studio Code 中 CodeRunner 插件的输出窗口中文乱码
- flutter打包的app有多大_前端大势所趋---Flutter 这篇文章会让你行动起来
- UIView 的旋转和缩放
- oracle下tmp后缀文件怎么打开,什么是TMP文件,怎么打开?(图文)
- sql统计不为空的字段数_SQL太难?你离完全理解SQL就差这10步!
- 硬件电路设计中的几点注意事项
- python blp模型 估计_简述BLP模型
- c语言ctype函数,C语言函数--ctype.h库函数
- R语言 CART算法和C4.5算法(决策树)
- android view.isshown,android View.isShown() 和 getVisibility() 的区别
- 根据year年的第week周,查询第week周的起止时间
- 71个外贸工具集合!2023年外贸业务员开发客户必备!
- 流媒体服务器(3)—— 常见开源流媒体服务器对比分析
- 优派vx2480-hd-pro简评 1080p+24寸+144hz+ips直屏 千元小金刚便宜又大碗?
- 梅科尔工作室-李舒婷-鸿蒙作业3
热门文章
- 对话车品觉:顶级数据团队该像支配合默契的篮球队
- 数学建模养成篇1:了解数学建模
- 【MongoDB】MongoDB入门篇,修行靠自学
- Error updating database. Cause: java.sql.SQLSyntaxErrorException: Unknown column ‘experience_openne
- 石臻臻的2021总结和2022展望 | 文末彩蛋
- 「镁客·请讲」冰鉴科技顾凌云:技术不仅仅指算法,还包括对于业务的理解...
- 爬虫实战:如何爬取高德地图?
- js案例:5秒后自动跳转
- 【javaSE】java异常详解
- AutoCAD 2016官方中文版下载(32+64位) 简体中文官网原生下载地址