質問
私のサンプルコードは次のとおりです。
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 の解析についても (簡単に) 説明します。
所属していません StackOverflow