2008-08-27 81 views
15

这里是我的示例代码:如何在python创建XML文档

from xml.dom.minidom import * 
def make_xml(): 
    doc = Document() 
    node = doc.createElement('foo') 
    node.innerText = 'bar' 
    doc.appendChild(node) 
    return doc 
if __name__ == '__main__': 
    make_xml().writexml(sys.stdout) 

当我运行上面的代码中,我得到这样的:

<?xml version="1.0" ?> 
<foo/> 

我想获得:

<?xml version="1.0" ?> 
<foo>bar</foo> 

我刚刚猜到有一个innerText属性,它没有给出编译器错误,但似乎没有工作......我如何去创建一个文本点头è?

回答

8

在对象上设置属性不会给出编译时或运行时错误,如果对象无法访问它,它将不起作用(即“node.noSuchAttr = 'bar'”也不会给出错误)。

除非你需要的minidom特定的功能,我想看看ElementTree

import sys 
from xml.etree.cElementTree import Element, ElementTree 

def make_xml(): 
    node = Element('foo') 
    node.text = 'bar' 
    doc = ElementTree(node) 
    return doc 

if __name__ == '__main__': 
    make_xml().write(sys.stdout) 
10

@Daniel

感谢您的答复,我也想通了如何与minidom命名(我这样做不敢肯定VS的minidom命名

 

from xml.dom.minidom import * 
def make_xml(): 
    doc = Document(); 
    node = doc.createElement('foo') 
    node.appendChild(doc.createTextNode('bar')) 
    doc.appendChild(node) 
    return doc 
if __name__ == '__main__': 
    make_xml().writexml(sys.stdout) 
 

了ElementTree之间的差异)的我发誓,我张贴我的问题之前尝试这个...