如何使用python将XML文件保存到磁盘?

Luc*_*ira 10 python xml file

我有一些python代码用xml.dom.minidom生成一些XML文本.现在,我从终端运行它,结果输出一个结构化的XML.我还想生成一个XML文件并将其保存到我的磁盘.怎么可能这样呢?

这就是我所拥有的:

import xml
from xml.dom.minidom import Document
import copy


class dict2xml(object):
    doc     = Document()

    def __init__(self, structure):
        if len(structure) == 1:
            rootName    = str(structure.keys()[0])
            self.root   = self.doc.createElement(rootName)

            self.doc.appendChild(self.root)
            self.build(self.root, structure[rootName])

    def build(self, father, structure):
        if type(structure) == dict:
            for k in structure:
                tag = self.doc.createElement(k)
                father.appendChild(tag)
                self.build(tag, structure[k])

        elif type(structure) == list:
            grandFather = father.parentNode
            tagName     = father.tagName
            # grandFather.removeChild(father)
            for l in structure:
                tag = self.doc.createElement(tagName.rstrip('s'))
                self.build(tag, l)
                father.appendChild(tag)

        else:
            data    = str(structure)
            tag     = self.doc.createTextNode(data)
            father.appendChild(tag)

    def display(self):
        print self.doc.toprettyxml(indent="  ")
Run Code Online (Sandbox Code Playgroud)

这只是生成XML.我怎么能把它作为文件保存到我的桌面?

Li-*_*Yip 15

您可能希望Node.writexml()在XML DOM树的根节点上使用.这会将您的根元素和所有子元素写入XML文件,并在此过程中执行所有必要的缩进等.

请参阅以下文档xml.dom.minidom:

Node.writexml(writer[, indent=""[, addindent=""[, newl=""]]])

将XML写入writer对象.编写器应该有一个write() 与文件对象接口匹配的方法.该indent 参数是当前节点的缩进.该addindent 参数是用于当前子节点的增量缩进.该newl参数指定用于终止换行符的字符串.

对于Document节点,可以使用其他关键字参数编码来指定XML标头的编码字段.

在2.1版中更改:添加了可选关键字参数indent,addindent和newl以支持相当的输出.

在版本2.3中更改:对于Document节点,可以使用其他关键字参数编码来指定XML标头的编码字段.

用法有点像:

file_handle = open("filename.xml","wb")
Your_Root_Node.writexml(file_handle)
file_handle.close()
Run Code Online (Sandbox Code Playgroud)

  • 以“wb”模式打开对我来说不起作用,但只有“w”起作用 (2认同)

Anu*_*yal 6

阅读python 文件,如果xml为字符串,你可以将它写入文件,例如

xml = "<myxmldata/>"
f =  open("myxmlfile.xml", "wb")
f.write(xml)
f.close()
Run Code Online (Sandbox Code Playgroud)

要从minidom节点获取xml字符串,您可以使用

xml = Node.toxml()
Run Code Online (Sandbox Code Playgroud)

或者您可以直接写入支持写入的对象,例如文件

Node.writexml(f)
Run Code Online (Sandbox Code Playgroud)