2009-03-25 15 views

答えて

11

あなたは単にファイルにその文字列を書き込むことができますので、XML DOMから文字列を作成するdoc.toprettyxmlを使用してリンク先のWebページのコード:

f = open("output.xml", "w") 
try: 
    f.write(doc.toprettyxml(indent=" ")) 
finally: 
    f.close() 
はPython 2.6で

(または2.7私は仮定あなたは

from __future__ import with_statement 
を置く場合、これはまた、Pythonの2.5で動作します

with open("output.xml", "w") as f: 
    f.write(doc.toprettyxml(indent=" ")) 

:それは)出てくるたび、あなたは "with" ステートメントを使用することができますファイルの先頭に

と入力します。

+0

+1は 'WITH'を追加します。 –

1
f = open('yourfile.xml', 'w') 
xml.dom.ext.PrettyPrint(doc, f) 
f.close() 
+0

ありがとうございます。このオープンメソッドは新しいファイルを作成しますか? –

+0

これは関数なので、ファイルが存在しない場合には新しいファイルが作成され、 'w'、 'wb'などが渡されます。その上のドキュメントを読んでください。 –

+0

また、まずxml.domをインポートする必要がありますか? –

9

coonjはまあまあですが、xml.dom.ext.PrettyPrintは、ますます無視されるPyXML拡張パッケージの一部です。

f= open('yourfile.xml', 'wb') 
doc.writexml(f, encoding= 'utf-8') 
f.close() 

を(あるいは、それが少し短くするデビッドで述べたように声明「で」を使用するモードと「wb」を使用してください:あなたは供給-として標準minidom以内に滞在したい場合、あなたは言うだろう。 UTF-16などのエンコーディングを妨げる不要なCRLF改行を避けることXMLは改行を処理する独自のメカニズムを備えているため、テキストではなくバイナリファイルとして扱う必要があります。

' encoding '引数(writexmlまたはtoprettyxmlのいずれか)を使用すると、Unicode文字列を直接ファイルに書き込もうとします。したがって、ASCII以外の文字があれば、UnicodeEncodeErrorを取得します。独自のtoprettyxmlの結果を.encode()しないでください。非UTF-8エンコーディングの場合、非整形式XMLを生成する可能性があります。

には「writeprettyxml()」関数はありませんが、それはそれを自分で行うには自明簡単です:編集用

with open('output.xml', 'wb') as f: 
    doc.writexml(f, encoding= 'utf-8', indent= ' ', newl= '\n') 
関連する問題