python minidom生成的xml对象转字符串方法

      之前找了好多博客,要不是互抄就是说用etree实现xml对象并使用etree自带的字符串转换方法将xml对象转为字符串输出。但是我就钟爱用minidom定义xml对象,所以干脆就自己琢磨,才发现minidom生成的xml对象是没有直接转为字符串接口的,但有writexml方法,可以将minidom定义的xml对象写入xml文件,但有时这并不是我们想要的,我们想要的是直接将xml对象转换为字符串输出,因此需要绕个弯,即将python标准输出流重定向到自定义的类(注意:这个类要有write方法实现),详细代码如下:

import xml.dom.minidom as minidom
import sys

#实现一个重定向的类,该类有write方法
class XmlStdin():
    def __init__(self):
        self.str=""
    def write(self,value):
        self.str+=value

    def toString(self):
        return self.str

#定义xml对象
dom = minidom.getDOMImplementation().createDocument(None,"root", None)
root = dom.documentElement
element = dom.createElement('test')
element.setAttribute('name', "i am 欧巴")
element.appendChild(dom.createTextNode("欧巴,你好帅呀"))
root.appendChild(element)
#修改标准输出流
xmlStdin=XmlStdin()
sys.stdin=xmlStdin
dom.writexml(sys.stdin, addindent='\t', newl='\n', encoding='utf-8')
print(xmlStdin.toString())

输出为:

<?xml version="1.0" encoding="utf-8"?>
<root>
	<test name="i am 欧巴">欧巴,你好帅呀</test>
</root>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值