我正在尝试在此文档中插入xml节点:
</providers>
</root>
我写了这段代码: 将xml.dom.minidom导入为m
doc = m.parse("monfichier.xml")
valeurs = doc.getElementsByTagName("providers")
element = doc.createElement("provider")
valeurs.appendChild(element)
elthost = doc.createElement("hostnamep")
eltLTVC = doc.createElement("LocalTrustValueC")
element.appendchild(elthost)
element.appendchild(eltLTVC)
texteHost = doc.createTextNode("machinename")
texteLTVC = doc.createTextNode("23")
eltHost.appendChild(texteHost)
eltLTVC.appendChild(texteLTVC)
doc.writexml(open("monfichier.xml","w"))
我想在最后获得这个xml文档: 计算机名 23
</provider>
</providers>
</root>
但是我得到了这个错误: valeurs.appendChild(元件) AttributeError:'NodeList'对象没有属性'appendChild'
答案 0 :(得分:2)
根据OP对XSLT解决方案的兴趣:
这是一个完整而简短的XSLT解决方案:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="providers">
<providers>
<provider>
<hostnamep>machinename</hostnamep>
<LocalTrustValueC>23</LocalTrustValueC>
</provider>
</providers>
</xsl:template>
</xsl:stylesheet>
在提供的XML文档上应用此转换时:
<root>
<providers>
</providers>
</root>
产生了想要的正确结果:
<root>
<providers>
<provider>
<hostnamep>machinename</hostnamep>
<LocalTrustValueC>23</LocalTrustValueC>
</provider>
</providers>
</root>
答案 1 :(得分:1)
基于对http://docs.python.org/library/xml.dom.html#dom-node-objects的一些快速阅读,似乎NodeList没有appendChild方法。相反,您希望获得结果集中的第一个节点(因为您的帖子暗示只有一个节点),并在该节点上调用appendChild。
valeurs = doc.getElementsByTagName("providers").item(0)
element = doc.createElement("provider")
valeurs.appendChild(element)