PYTHON生成XML文件

合集下载

python请求并解析xml的几种方法

python请求并解析xml的几种方法

一、介绍在网络开发中,经常会遇到需要请求并解析xml格式的数据的情况,而Python作为一种十分流行的编程语言,提供了多种方法来实现这一功能。

本文将介绍Python中请求并解析xml的几种方法,以帮助读者更好地应对实际开发中的需求。

二、使用urllib和xml.etree.ElementTree1. 使用urllib库发送HTTP请求获取xml数据``` pythonimport urllib.requesturl = "xxx"response = urllib.request.urlopen(url)xml_data = response.read()```2. 使用xml.etree.ElementTree库解析xml数据``` pythonimport xml.etree.ElementTree as ETroot = ET.fromstring(xml_data)3. 示例代码``` pythonimport urllib.requestimport xml.etree.ElementTree as ETurl = "xxx"response = urllib.request.urlopen(url)xml_data = response.read()root = ET.fromstring(xml_data)```三、使用requests和xmltodict1. 使用requests库发送HTTP请求获取xml数据``` pythonimport requestsurl = "xxx"response = requests.get(url)xml_data = response.text2. 使用xmltodict库解析xml数据``` pythonimport xmltodictxml_dict = xmltodict.parse(xml_data) ```3. 示例代码``` pythonimport requestsimport xmltodicturl = "xxx"response = requests.get(url)xml_data = response.textxml_dict = xmltodict.parse(xml_data) ```四、使用lxml库1. 使用requests库发送HTTP请求获取xml数据``` pythonimport requestsurl = "xxx"response = requests.get(url)xml_data = response.text```2. 使用lxml库解析xml数据``` pythonfrom lxml import etreexml_tree = etree.fromstring(xml_data)```3. 示例代码``` pythonimport requestsfrom lxml import etreeurl = "xxx"response = requests.get(url)xml_data = response.textxml_tree = etree.fromstring(xml_data)```五、总结本文介绍了Python中请求并解析xml的几种方法,包括使用urllib和xml.etree.ElementTree、requests和xmltodict、以及lxml库。

python3解析XML

python3解析XML

python3解析XML在XML解析⽅⾯,Python贯彻了⾃⼰“开箱即⽤”(batteries included)的原则。

在⾃带的标准库中,Python提供了⼤量可以⽤于处理XML语⾔的包和⼯具,数量之多,甚⾄让Python编程新⼿⽆从选择。

本⽂将介绍深⼊解读利⽤Python语⾔解析XML⽂件的⼏种⽅式,并以笔者推荐使⽤的ElementTree模块为例,演⽰具体使⽤⽅法和场景。

⽂中所使⽤的Python版本为2.7。

⼀、什么是XML?XML是可扩展标记语⾔(Extensible Markup Language)的缩写,其中的标记(markup)是关键部分。

您可以创建内容,然后使⽤限定标记标记它,从⽽使每个单词、短语或块成为可识别、可分类的信息。

标记语⾔从早期的私有公司和政府制定形式逐渐演变成标准通⽤标记语⾔(Standard Generalized Markup Language,SGML)、超⽂本标记语⾔(Hypertext Markup Language,HTML),并且最终演变成 XML。

XML有以下⼏个特点。

XML的设计宗旨是传输数据,⽽⾮显⽰数据。

XML标签没有被预定义。

您需要⾃⾏定义标签。

XML被设计为具有⾃我描述性。

XML是W3C的推荐标准。

⽬前,XML在Web中起到的作⽤不会亚于⼀直作为Web基⽯的HTML。

XML⽆所不在。

XML是各种应⽤程序之间进⾏数据传输的最常⽤的⼯具,并且在信息存储和描述领域变得越来越流⾏。

因此,学会如何解析XML⽂件,对于Web开发来说是⼗分重要的。

⼆、有哪些可以解析XML的Python包?Python的标准库中,提供了6种可以⽤于处理XML的包。

xml.domxml.dom实现的是W3C制定的DOM API。

如果你习惯于使⽤DOM API或者有⼈要求这这样做,可以使⽤这个包。

不过要注意,在这个包中,还提供了⼏个不同的模块,各⾃的性能有所区别。

DOM解析器在任何处理开始之前,必须把基于XML⽂件⽣成的树状数据放在内存,所以DOM解析器的内存使⽤量完全根据输⼊资料的⼤⼩。

python oxmlelement 用法

python oxmlelement 用法

文章标题:深度剖析Python中Oxmlelement的用法一、了解OxmlelementPython中的Oxmlelement是XML元素处理模块的一部分,它提供了一种简单明了的方式来处理XML数据。

通过使用Oxmlelement,我们可以轻松地创建XML文档、解析XML数据、以及对XML元素进行操作,是Python中处理XML数据的重要工具之一。

二、Oxmlelement的基本用法1. 创建Oxmlelement对象在Python中,我们可以通过调用Element类来创建一个Oxmlelement对象。

我们可以使用以下代码创建一个名为"book"的XML元素:```pythonimport xml.etree.ElementTree as ETbook = ET.Element("book")```2. 添加子元素通过使用Oxmlelement对象的append()方法,我们可以在已有的XML元素中添加子元素。

以下是一个示例代码:```pythontitle = ET.SubElement(book, "title")title.text = "Python Programming"```3. 生成XML文档使用Oxmlelement对象的tostring()方法,我们可以将创建的XML元素转换为字符串形式,从而生成XML文档。

示例代码如下:```pythonxml_str = ET.tostring(book, encoding="unicode")print(xml_str)```三、Oxmlelement的高级用法1. 解析XML数据除了创建XML文档,Oxmlelement还可以帮助我们解析已有的XML 数据。

通过使用ET.parse()方法,我们可以将XML文件解析为Oxmlelement对象,方便我们对XML数据进行处理。

bs4解析xml文件,制作xml文件

bs4解析xml文件,制作xml文件

bs4解析xml⽂件,制作xml⽂件使⽤BS4解析XML⽂件⽤法1. html.parserfrom bs4 import BeautifulSoupsoup = BeautifulSoup(html, "html.parser")两个参数:第⼀个参数是要解析的html⽂本,第⼆个参数是使⽤那种解析器,对于HTML来讲就是html.parser,这个是bs4⾃带的解析器2.soup = BeautifulSoup(html, "lxml")查找所有符合条件的标签a)使⽤tag查找soup.find_all('b')b)正则表达式查找soup.find_all(pile("^b"))c)按列表中提供的tab查找soup.find_all(["a", "b"])d)实例解析html将dt中class和ul中text找到放⼈字典中b.html内容:<div class="MuneDown"><dl><dt class="menuListBox"><ul class="a"> xxx</ul></dt><dd class="adMuneBox validateArea" _bamboo_rep_transid="150166001-1" _bamboo_rep_menuid="" modulecode="module_nav_myunicom" _bamboo_rep_productlink="" validatetype="module_logo_area_2" rowrecordid="b6303d42ec84468 </dl></div></div>View Code代码如下:#!/usr/bin/env python#coding:utf-8import osimport sysimport lxmlfrom bs4 import BeautifulSoupxml_file = sys.argv[1]with open(xml_file, 'r') as f:xml = f.read()soup = BeautifulSoup(xml, 'lxml')link_content = soup.select("div[class='MuneDown']")result = {}for item in link_content:dt = item.dt["class"][0]ul = item.select("ul[class='a']")[0].get_text()print("dt:{}".format(dt))print("ul: {}".format(ul))result[dt] = ulprint(result)View Code运⾏结果:dt:menuListBoxul: xxx{'menuListBox': ' xxx'}参考链接:第⼆部分制作lxml⽂件代码⽰例:#!/usr/bin/env python#coding:utf-8from xml.dom.minidom import Documentimport xml.dom.minidomdoc = Document() #创建DOM⽂档对象Object = doc.createElement('Objects')doc.appendChild(Object)label_name='person'label=15label_attribute = ("name", "lala")xmin=207ymin=106xmax=489ymax=381score=0.99566object_name = doc.createElement(label_name)#object_name.setAttribute('物体类别',label_name)#设置命名空间Object.appendChild(object_name)object_label =doc.createElement('label')object_label.setAttribute(label_attribute[0],label_attribute[1])object_label_text = doc.createTextNode(str(label)) #元素内容写⼊object_label.appendChild(object_label_text)object_name.appendChild(object_label)object_xmin =doc.createElement('xmin')object_xmin_text = doc.createTextNode(str(xmin)) #元素内容写⼊object_xmin.appendChild(object_xmin_text)object_name.appendChild(object_xmin)object_ymin =doc.createElement('ymin')object_ymin_text = doc.createTextNode(str(ymin)) #元素内容写⼊object_ymin.appendChild(object_ymin_text)object_name.appendChild(object_ymin)object_xmax =doc.createElement('xmax')object_xmax_text = doc.createTextNode(str(xmax)) #元素内容写⼊object_xmax.appendChild(object_xmax_text)object_name.appendChild(object_xmax)object_ymax =doc.createElement('ymax')object_ymax_text = doc.createTextNode(str(ymax)) #元素内容写⼊object_ymax.appendChild(object_ymax_text)object_name.appendChild(object_ymax)object_score= doc.createElement('score')object_score_text = doc.createTextNode(str(score)) #元素内容写⼊object_score.appendChild(object_score_text)object_name.appendChild(object_score)f = open('parameter.xml','w')doc.writexml(f,indent = '\t',newl = '\n', addindent = '\t',encoding='utf-8') f.close()⽣成xml⽂件如下<?xml version="1.0" encoding="utf-8"?><Objects><person><label name="lala">15</label><xmin>207</xmin><ymin>106</ymin><xmax>489</xmax><ymax>381</ymax><score>0.99566</score></person></Objects>参考链接:。

python xml.etree iterparse用法

python xml.etree iterparse用法

python xml.etree iterparse用法Python 是一种高级编程语言,具有易学易用、高效可靠的特点,被广泛应用于自然语言处理、数据科学等领域。

XML 是一种被广泛应用于数据交换和数据存储的格式。

Python 中内置了对 XML 的支持,使用 xml.etree 模块可以解析、生成和修改 XML 文档。

其中xml.etree.ElementTree.iterparse() 方法是一种高效的解析 XML 文档的方法。

本文将介绍 xml.etree.iterparse 的使用方法,以及如何使用 iterparse 解析大型 XML 文档。

1. xml.etree.ElementTree.iterparse() 简介xml.etree.ElementTree.iterparse() 是ElementTree 模块中解析 XML 文档的一种高级方法。

这个方法的优点是可以以迭代器的方式逐行解析 XML 文档,节省内存,特别适合处理大型 XML 文档。

该方法接受三个参数,分别是 XML 文件名、events 和 parser。

其中,XML 文件名是需要解析的 XML 文件名,events 指定要解析的事件类型,可以是 element、start、end 和 comment,parser 指定使用的解析器,可以是 XML 或者 HTML。

2.使用 xml.etree.ElementTree.iterparse() 方法解析 XML 文档使用 xml.etree.ElementTree.iterparse() 方法解析XML 文档需要如下步骤:(1)导入 xml.etree.ElementTree 模块``` import xml.etree.ElementTree as ET ```(2)解析 XML 文档``` tree =ET.iterparse('example.xml',events=('start', 'end')) ```上述代码中,iterparse() 方法指定了需要解析的XML 文件名为 example.xml,events 参数指定了需要解析的事件类型,包括 start 和 end。

python之json文件转xml文件案例讲解

python之json文件转xml文件案例讲解

python之json⽂件转xml⽂件案例讲解json⽂件格式这是yolov4模型跑出来的检测结果result.json下⾯是截取的⼀张图的检测结果{"frame_id":1, #图⽚的序号"filename":"/media/wuzhou/Gap/rgb-piglet/test/00000000.jpg", #图⽚的路径"objects": [ #该图中所有的⽬标:⽬标类别、⽬标名称、归⼀化的框的坐标(xywh格式)、置信度{"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.750913, "center_y":0.402691, "width":0.038380, "height":0.193304}, "confidence":0.995435}, {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.764775, "center_y":0.199255, "width":0.049979, "height":0.130169}, "confidence":0.994495}, {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.560050, "center_y":0.482614, "width":0.036331, "height":0.166377}, "confidence":0.994460}, {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.710756, "center_y":0.406446, "width":0.041782, "height":0.191297}, "confidence":0.993540}, {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.638335, "center_y":0.238725, "width":0.107689, "height":0.092282}, "confidence":0.992926}, {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.780232, "center_y":0.448454, "width":0.041550, "height":0.179540}, "confidence":0.990020}, {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.563412, "center_y":0.350035, "width":0.103184, "height":0.059460}, "confidence":0.979756}, {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.522591, "center_y":0.195170, "width":0.083014, "height":0.071478}, "confidence":0.970642}, {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.658721, "center_y":0.154640, "width":0.103852, "height":0.055686}, "confidence":0.967082}, {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.537660, "center_y":0.256810, "width":0.101619, "height":0.095211}, "confidence":0.918135}, {"class_id":0, "name":"pp", "relative_coordinates":{"center_x":0.528618, "center_y":0.481005, "width":0.033226, "height":0.177723}, "confidence":0.310291} ]},完整代码代码需要指定图⽚的路径,例如 file_dir = "H:/rgb-piglet/five/test"注意:result.json⽂件要跟图⽚放⼀起代码⽣成的xml与图⽚在同⼀个路径下import jsonimport timeimport osfrom PIL import Imageimport cv2import numpy as np'''⼈为构造xml⽂件的格式'''out0 ='''<annotation><folder>%(folder)s</folder><filename>%(name)s</filename><path>%(path)s</path><source><database>None</database></source><size><width>%(width)d</width><height>%(height)d</height><depth>3</depth></size><segmented>0</segmented>'''out1 = ''' <object><name>%(class)s</name><pose>Unspecified</pose><truncated>0</truncated><difficult>0</difficult><bndbox><xmin>%(xmin)d</xmin><ymin>%(ymin)d</ymin><xmax>%(xmax)d</xmax><ymax>%(ymax)d</ymax></bndbox></object>'''out2 = '''</annotation>'''def read_json(json_dir):with open(json_dir,"r") as f:data = json.load(f)print(type(data),len(data),type(data[0]),data[0]['frame_id']) return data'''txt转xml函数'''def translate(fdir,lists):source = {}label = {}data = read_json(fdir+"/result.json")k = 0for jpg in lists:print(jpg)if jpg[-4:] == '.jpg':image= cv2.imread(jpg)#路径不能有中⽂h,w,_ = image.shape #图⽚⼤⼩fxml = jpg.replace('.jpg','.xml')fxml = open(fxml, 'w');imgfile = jpg.split('/')[-1]source['name'] = imgfilesource['path'] = jpgsource['folder'] = os.path.basename(fdir)source['width'] = wsource['height'] = hfxml.write(out0 % source)for obj in data[k]["objects"]:label['class'] = obj["class_id"]box = obj["relative_coordinates"]'''把txt上的数字(归⼀化)转成xml上框的坐标'''xmin = float(box["center_x"] - 0.5*box["width"])*w ymin = float(box["center_y"] - 0.5*box["height"])*h xmax = float(xmin + box["width"]*w)ymax = float(ymin + box["height"]*h)label['xmin'] = xminlabel['ymin'] = yminlabel['xmax'] = xmaxlabel['ymax'] = ymaxfxml.write(out1 % label)k = k+1fxml.write(out2)if __name__ == '__main__':file_dir = "H:/rgb-piglet/five/test"lists=[]for i in os.listdir(file_dir):if i[-3:]=='jpg':lists.append(file_dir+'/'+i)#print(lists)translate(file_dir,lists)print('---------------Done--------------')到此这篇关于python之json⽂件转xml⽂件案例讲解的⽂章就介绍到这了,更多相关python之json⽂件转xml内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

closedxml使用手册

closedxml使用手册

closedxml使用手册摘要:一、前言二、closedxml 简介1.什么是closedxml2.为什么使用closedxml三、closedxml 基本操作1.创建XML 文档2.添加XML 元素和属性3.修改XML 元素和属性4.删除XML 元素和属性5.查找和替换XML 内容四、closedxml 高级操作1.遍历和修改XML 文档2.导入和导出XML 数据3.验证XML 文档五、closedxml 应用案例1.案例一:生成XML 文件2.案例二:从XML 文件中读取数据六、总结正文:一、前言closedxml 是一款用于处理XML 文档的Python 库,它可以帮助我们轻松地创建、读取、修改和删除XML 文档。

在许多实际应用中,我们都需要处理XML 格式的数据,closedxml 为我们提供了方便快捷的处理方式。

二、closedxml 简介2.1 什么是closedxmlclosedxml 是一个Python 库,用于处理XML 文档。

它基于Python 的解析器,提供了简单易用的API,使开发者能够轻松地创建、读取、修改和删除XML 文档。

2.2 为什么使用closedxmlclosedxml 具有以下优点:- 简单易用:closedxml 提供了简单直观的API,使开发者能够快速上手。

- 高效性能:closedxml 基于Python 的内置解析器,性能优于其他第三方库。

- 跨平台支持:closedxml 可以在Windows、Linux 和Mac OS X 等平台上运行。

三、closedxml 基本操作3.1 创建XML 文档要创建一个XML 文档,可以使用closedxml 的Document() 函数。

例如:```pythonfrom closedxml import etreedoc = etree.Document()```3.2 添加XML 元素和属性要向XML 文档中添加元素和属性,可以使用doc.create_element() 和doc.set() 方法。

python lxml的使用方法

python lxml的使用方法

标题:深入探讨Python lxml的使用方法Python lxml是一种强大的XML和HTML处理库,它提供了简单易用的API,使得在Python中处理XML和HTML变得更加高效和方便。

本文将从简单到复杂,由浅入深地探讨Python lxml的使用方法,帮助读者更好地理解和掌握这一库的功能和特性。

1. 简介在开始探讨Python lxml的使用方法之前,让我们首先了解一下什么是Python lxml。

Python lxml是基于C语言开发的高性能XML处理库,它继承了ElementTree API,并进行了扩展,提供了更丰富和强大的功能。

使用Python lxml,我们可以方便地解析、生成和处理XML和HTML文档,是Python中处理XML和HTML的重要工具之一。

2. 基本用法要使用Python lxml,首先需要安装lxml库。

安装完成后,我们可以使用lxml.etree模块来解析和处理XML和HTML文档。

最基本的用法包括解析文件、遍历节点、查找元素、修改元素和序列化文档等操作。

通过简单的示例代码,我们可以快速了解这些基本的用法,并在实践中掌握它们。

3. 高级功能除了基本的用法之外,Python lxml还提供了许多高级功能,如XPath查询、命名空间处理、DTD验证、XSLT转换等。

这些功能可以帮助我们更加灵活地处理XML和HTML文档,实现更多复杂的操作。

在探讨这些高级功能时,我们将深入讨论它们的原理和用法,并通过案例演示它们的实际应用。

4. 个人观点和总结作为一个Python开发者,我个人认为Python lxml是处理XML和HTML的利器,它提供了丰富的功能和灵活的API,能够满足各种需求。

在实际项目中,我经常使用Python lxml来解析和处理复杂的XML和HTML文档,它让我的工作变得更加高效和便捷。

通过学习和掌握Python lxml的使用方法,我相信它也能为你带来便利和效率。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

下面我来演示一下如何从无到有生成象catalog.xml一样的XML文件。

一、生成dom对象>>>import xml.dom.minidom>>>impl=xml.dom.minidom.getDOMImplementation()>>>dom=impl.createDocument(None,'catalog',None)这样就生成了一个空的dom对象。

其中catalog为文档元素名,即根元素名。

二、显示生成的XML内容每一个dom结点对象(包括dom对象本身)都有输出XML内容的方法,如:toxml(), toprettyxml()toxml()输出紧凑格式的XML文本,如:<catalog><item>test</item><item>test</item></catalog>toprettyxml()输出美化后的XML文本,如:<catalog><item>test</item><item>test</item></catalog>可以看出,它是将每个结点后面都加入了回车符,并且自动处理缩近。

但对于每一个元素,如果元素只有文本内容,则我希望元素的tag与文本是在一起的,如:<item>test</item>而不想是分开的格式,但minidom本身是不支持这样的处理。

关于如何实现形如:<catalog><item>test</item><item>test</item></catalog>这样的XML格式,后面我们再说。

三、生成各种结点对象dom对象拥有各种生成结点的方法,下面列出文本结点,CDATA结点和元素结点的生成过程。

1.文本结点的生成>>>text=dom.createTextNode('test')test要注意的是,在生成结点时,minidom并不对文本字符进行检查,象文本中如果出现了'<','&'之类的字符,应该转换为相应的实体符号'&lt;','&amp;'才可以,这里没有做这个处理。

2.CDATA结点的生成>>>data=dom.createCDATASection('aaaaaa\nbbbbbb')>>>data.toxml()'<![CDATA[aaaaaa\nbbbbbb]]>'CDATA是用于包括大块文本,同时可以不用转换'<','&'字符的标记,它是用<![CDATA[文本]]>来包括的。

但文本中不可以有"]]>"这样的串存在。

生成结点时minidom不作这些检查,只有当你输出时才有可能发现有错。

3.元素结点的生成>>>item=dom.createElement('caption')>>>item.toxml()'<caption/>'对于象元素这样的结点,生成的元素结点其实是一个空元素,即不包含任何文本,如果要包含文本或其它的元素,我们需要使用appendChild()或insertBefore()之类的方法将子结点加就到元素结点中。

如将上面生成的text 结点加入到caption元素结点中:>>>item.appendChild(text)<DOM Text node"test">>>>item.toxml()'<caption>test</caption>'使用元素对象的setAttribute()方法可以向元素中加入属性,如:>>>item.setAttribute('id','idvalue')>>>item.toxml()'<caption id="idvalue">test</caption>'四、生成dom对象树我们有了dom对象,又知道了如何生成各种结点,包括叶子结点(不包含其它结点的结点,如文本结点)和非叶子结点(包含其它结点的结点,如元素结点)的生成,然后就需要利用结点对象本身的appendChild()或insertBefore()方法将各个结点根据在树中的位置连起来,串成一棵树。

最后要串到文档结点上,即根结点上。

如一个完整的示例为:>>>import xml.dom.minidom>>>impl=xml.dom.minidom.getDOMImplementation()>>>dom=impl.createDocument(None,'catalog',None)>>>root=dom.documentElement>>>item=dom.createElement('item')>>>text=dom.createTextNode('test')>>>item.appendChild(text)<DOM Text node"test">>>>root.appendChild(item)<DOM Element:item at0xb9cf80>>>>print root.toxml()<catalog><item>test</item></catalog>五、简单生成元素结点的函数下面是我写的一个小函数,用于简单的生成类似于:<caption>test</caption>或形如:<item><![CDATA[test]]></item>的元素结点1def makeEasyTag(dom,tagname,value,type='text'):2tag=dom.createElement(tagname)3if value.find(']]>')>-1:4type='text'5if type=='text':6value=value.replace('&','&amp;')7value=value.replace('<','&lt;')8text=dom.createTextNode(value)9elif type=='cdata':10text=dom.createCDATASection(value)11tag.appendChild(text)12return tag参数说明:∙dom为dom对象∙tagname为要生成元素的名字,如'item'∙value为其文本内容,可以为多行∙type为文本结点的格式,'text'为一般Text结点,'cdata'为CDATA结点函数处理说明:∙首先创建元素结点∙查找文本内容是否有']]>',如果找到,则此文本结点只可以是Text结点∙如果结点类型为'text',则对文本内容中的'<'替换为'&lt;','&'替换为'&amp;',再生成文本结点∙如果结点类型为'cdata',则生成CDATA结点∙将生成的文本结点追加到元素结点上因此这个小函数可以自动地处理字符转化及避免CDATA结点中出现']]>'串。

上面生成'item'结点的语句可以改为:>>>item=makeEasyTag(dom,'item','test')>>>item.toxml()'<item>test</item>'六、写入到XML文件中dom对象树已经生成好了,我们可以调用dom的writexml()方法来将内容写入文件中。

writexml()方法语法格式为:writexml(writer,indent,addindent,newl,encoding)∙writer是文件对象∙indent是每个tag前填充的字符,如:'',则表示每个tag前有两个空格∙addindent是每个子结点的缩近字符∙newl是每个tag后填充的字符,如:'\n',则表示每个tag后面有一个回车∙encoding是生成的XML信息头中的encoding属性值,在输出时minidom 并不真正进行编码的处理,如果你保存的文本内容中有汉字,则需要自已进行编码转换。

writexml方法是除了writer参数必须要有外,其余可以省略。

下面给出一个文本内容有汉字的示例:1>>>import xml.dom.minidom2>>>impl=xml.dom.minidom.getDOMImplementation()3>>>dom=impl.createDocument(None,'catalog',None)4>>>root=dom.documentElement5>>>text=unicode('汉字示例','cp936')6>>>item=makeEasyTag(dom,'item',text)7>>>root.appendChild(item)8<DOM Element:item at0xb9ceb8>9>>>root.toxml()10u'<catalog><item>\u6c49\u5b57\u793a\u4f8b</item></catalog>'11>>>f=file('d:/test.xml','w')12>>>import codecs13>>>writer=codecs.lookup('utf-8')[3](f)14>>>dom.writexml(writer,encoding='utf-8')15>>>writer.close()5行因为XML处理时内部使用Unicode编码,因此象汉字首先要转成Unicode,如果你不做这一步minicode并不检查,并且保存时可能不会出错。

相关文档
最新文档