PythonでXMLドキュメントを作成するにはどうすればよいですか

StackOverflow https://stackoverflow.com/questions/29243

  •  09-06-2019
  •  | 
  •  

質問

私のサンプルコードは次のとおりです。

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 プロパティがあったと推測しましたが、コンパイラ エラーは発生しませんでしたが、機能しないようです...テキストノードを作成するにはどうすればよいですか?

役に立ちましたか?

解決

オブジェクトに属性を設定しても、コンパイル時エラーや実行時エラーは発生しません。オブジェクトがアクセスしない場合は何も役に立ちません。」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)

他のヒント

@ダニエル

返信ありがとうございます。minidomでそれを行う方法もわかりました(ElementTreeと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)

質問を投稿する前にこれを試してみたことを誓います...

見つけました minidom メソッドに関するかなり詳細なチュートリアル

ここにあります etree メソッドのチュートリアル. 。非常に読みやすく、非常にシンプルに見えます。XML の解析についても (簡単に) 説明します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top