-1

XMLを作成するためのPythonスクリプトを作成しましたが、Python内で見出しを編集する方法が見つかりませんでした。

基本的に、これを私の見出しとして持つ代わりに:

<?xml version="1.0" ?>

私はこれを持っている必要があります:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>

私はこれをできる限り調べましたが、Python内からスタンドアロンステータスを追加する方法が見つかりませんでした。そのため、作成後にファイルを調べて、テキストを置き換える必要があると考えました。XML形式を台無しにする可能性があるため、readlines()の使用を遠ざける必要があるいくつかの場所を読みました。

現在、これを実行する必要があるコード(PythonでのXMLの編集に関する別のStackoverflowの投稿から取得したもの)は次のとおりです。

doc = parse('file.xml')
elem = doc.find('xml version="1.0"')
elem.text = 'xml version="1.0" encoding="UTF-8" standalone="no"'

それは私にKeyErrorを提供します。私はそれを無駄にデバッグしようとしましたが、それはおそらくXML見出しがこのように編集されることを意図していないと私に信じさせます。または私のコードが間違っています。

誰かが興味を持っている(またはPythonコードにスタンドアロンステータスを挿入する方法を奇跡的に知っている)場合は、xmlファイルを作成するための私のコードを次に示します。

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

Some people don't like "toprettyxml", but with my relatively basic level, it seemed like the best bet.

Anyway, if anyone can provide some advice or insight, I would be very grateful.

4

1 に答える 1

0

API には、XML 宣言で属性を書き出すためのxml.etreeオプションはありません。standalone

代わりにlxmlライブラリを使用することもできます。同じ ElementTree API を使用しますが、出力をより細かく制御できます。次のフラグtostring()をサポートします。standalone

from lxml import etree

etree.tostring(doc, pretty_print=True, standalone=False)

または.write()、同じオプションをサポートする を使用します。

doc.write(outputfile, pretty_print=True, standalone=False)
于 2012-12-21T16:45:24.173 に答える