使用minidom在Python中创建XML文件(多个父级元素)

时间:2016-08-01 12:35:54

标签: python xml minidom

我目前正在尝试使用minidom在Python中创建一个双重父级的XML文件,但我努力让它工作(并且通过挣扎,我的意思是它不是)

我试图创造这样的东西:

<?xml version="1.0"?>
<twitter>
    <account>
        <name>Triple J</name>
        <handle>triplejplays</handle>
        <format>.{artist} - {title} [{time}]</format>
    </account>
    <account>
        <name>BBC Radio 1</name>
        <handle>BBCR1MusicBot</handle>
        <format>Now Playing {artist} - {title}</format>
    </account>
</twitter>

使用此代码:

def createXML():
    #Define document
    xmlFile = Document()

    #Create base element
    baseElement = xmlFile.createElement("twitter")

    #Create account element
    accountElement = xmlFile.createElement("account")

    #Append account element to base element
    baseElement.appendChild(accountElement)

    #Create elements and content under account
    nameElement = xmlFile.createElement("name")
    nameContent = xmlFile.createTextNode("Triple J")
    nameContent.appendChild(nameElement)
    nameElement.appendChild(accountElement)

    handleElement = xmlFile.createElement("handle")
    handleContent = xmlFile.createTextNode("triplejplays")
    handleContent.appendChild(handleElement)
    handleElement.appendChild(accountElement)

    formatElement = xmlFile.createElement("format")
    formatContent = xmlFile.createTextNode(".{artist} - {title} [{time}]")
    formatContent.appendChild(formatElement)
    formatElement.appendChild(formatElement)

    print(doc.toxml(encoding='utf-8'))

createXML()

但是我收到了这个错误:

Text nodes cannot have children

有没有办法让这项工作?提前谢谢!

1 个答案:

答案 0 :(得分:0)

而不是例如nameContent.appendChild(nameElement)你需要nameElement.appendChild(nameContent),因为你需要将文本节点create附加到之前创建的元素节点。