0

コードは次のとおりです。

    from xml.dom.minidom import Document

doc = Document()
root = doc.createElement('root')
doc.appendChild(root)
for i in range(1,3):
    main = doc.createElement('item class:=memory')
    root.appendChild(main)
    for j in range(1,3):
        text = doc.createTextNode('DIMM Size'+str(j))
        main.appendChild(text)

print (doc.toprettyxml(indent='\t'))

出力は次のとおりです。

     <?xml version="1.0" ?>
<root>
    <item class:=memory>
        DIMM Size1
        DIMM Size2
    </item class:=memory>
    <item class:=memory>
        DIMM Size1
        DIMM Size2
    </item class:=memory>
</root>

次のコードでファイルを生成しようとしています。次の出力を生成する方法はありますか:

<root>
    <item class:=memory>
        <p> DIMM Size1 </p>
        <p>DIMM Size2 </p>
    </item>
    <item class:=memory>
        <p>DIMM Size1</p>
        <p>DIMM Size2</p>
    </item>
</root>
4

1 に答える 1

2

2 つのクイック チェンジが必要です

  1. p要素を作成します。doc.createElement('p')
  2. 属性を手動で設定しないで、代わりに node.attributes を使用してください。main.attributes['class']='memory'

コードは次のようになります

from xml.dom.minidom import Document

doc = Document()
root = doc.createElement('root')
doc.appendChild(root)
for i in range(1,3):
    main = doc.createElement('item')
    main.attributes['class']='memory'
    root.appendChild(main)
    for j in range(1,3):
        p = doc.createElement('p')
        text = doc.createTextNode('DIMM Size'+str(j))
        p.appendChild(text)
        main.appendChild(p)

print (doc.toprettyxml(indent='\t'))

長期的な変更は、より直感的なインターフェイスを持ち、使いやすいElementTreeを使用することです。たとえば、要素ツリーの例などの xml を読みながら

from xml.etree import cElementTree as etree

root = etree.Element('root')
for i in range(1,3):
    item = etree.SubElement(root, 'item')
    item.attrib['class']='memory'
    for j in range(1,3):
        p = etree.SubElement(item, 'p')
        p.text = 'DIMM Size %s'%j

print etree.tostring(root)
于 2012-03-19T17:41:17.923 に答える