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>

猜你喜欢

转载自blog.csdn.net/weixin_37864449/article/details/96773084
今日推荐