1

このドキュメントに xml ノードを挿入しようとしています:

</providers>

</root>

私はこのコードを書きました: import xml.dom.minidom as 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 ドキュメントを取得したい: machinename 23

    </provider> 
</providers>

</root>

しかし、私はこのエラーを取得しました: valeurs.appendChild(element) AttributeError: 'NodeList' object has no attribute 'appendChild'

4

2 に答える 2

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>
于 2012-06-17T20:20:02.860 に答える
1

http://docs.python.org/library/xml.dom.html#dom-node-objectsを簡単に読むと、NodeList には appendChild メソッドがないように見えます。代わりに、結果セットの最初の Node を取得し (投稿は 1 つしかないことを示しているため)、そのノードで appendChild を呼び出します。

valeurs = doc.getElementsByTagName("providers").item(0)
element = doc.createElement("provider")
valeurs.appendChild(element)
于 2012-06-17T20:18:02.407 に答える