2011-01-19 8 views
0

データモデルやクラスからオブジェクトを取得しています。これをXMLファイルから読み込んで初期化するか、このオブジェクトをゼロから作成してxmlファイルに出力する必要があります。以前は、Pythonの文字列演算を使用して、エラーチェックを行わずにxml(file.read + string.find)を読み込み、xml(file.write)を書き出すだけでした。pythonでsax2でxmlを生成する

今私はこれを行うためにSax2を使用することを考えています。私は読むためにそれをする方法を知っていますが、書き込みについてはあまり明確ではありません。オリジナルのXMLがあり、特定の変更の後に出力したい場合、sax2が使用されているようです。私の場合は、私のデータモデルをXMLに出力したいのですが、元のXMLはまったくありません。 sax2がこれに適しているのか、これに適しているのだろうか、古い方法を使い続けるべきなのだろうか。 Pythonを使用してXMLとの間でクラスオブジェクトを入出力するためのより良い方法は何ですか?このクラスは非常に単純です(リスト情報のリストコレクション、つまりroot - > children - > grandchildren)と小さなサイズです。

ありがとうございます。

答えて

2

pythonic XML処理方法:ElementTreeを試してください。

`xml.etree.ElementTree.ElementTree.write()でXML出力を生成するのは簡単です。

write(file, encoding="us-ascii", xml_declaration=None, method="xml")

XMLとして、ファイルに要素ツリーを書き込みます。 fileはファイル名、または書き込み用にオープンされたファイルオブジェクトです。 1のエンコードが出力エンコード(デフォルトはUS-ASCII)です。 xml_declarationは、XML宣言をファイルに追加する必要があるかどうかを制御します。 neverの場合はFalse、alwaysの場合はTrue、US-ASCIIでもUTF-8でもない場合はNoneを使用します(デフォルトはNone)。メソッドは "xml"、 "html"または "text"です(デフォルトは "xml")。エンコードされた文字列を返します。テキストファイルからElementTreeオブジェクトをロード

例:

>>> from xml.etree.ElementTree import ElementTree 
>>> tree = ElementTree() 
>>> tree.parse("index.xhtml") 
+0

は私が読んで、ElementTreeのと書くのですができ、両方の?私はSax2での読み方を知っているので、少し躊躇して別の方法を使用しています。あなたの入力をありがとう、私は見てみましょう – pepero

関連する問題