2016-05-24 5 views
-2

次のように私は、xmlファイルを持っている:python2.5を使用してxmlファイルの開始に<!DOCTYPE>を追加する方法は?

<sample> 
    <attributes> xyz 
    </attributes> 
    </sample> 

私はXMLの開始に追加する:

<!DOCTYPE sample SYSTEM "location/sample.dtd"> 

私だけのpython 2.5を使用する必要があります。だから、どうすればいいか教えてください。私は、最終的なxmlファイルになりたい:

<sample> 
    <!DOCTYPE sample SYSTEM "location/sample.dtd"> 
    <attributes> xyz 
    </attributes> 
    </sample> 
+0

それは大丈夫でしょうか? – WildCard

+0

@ WildCard私は両方とも大丈夫ですが、 – Learner

+0

のいずれかがシステム変数であることを示唆しているかもしれませんか? – WildCard

答えて

-1

次のコードは書き、またはあなたのPythonスクリプトの現在のディレクトリにfile.xmlを上書きします..あなたは、特定のディレクトリレットにfile.xmlを書きたい場合私は知っている。

前の回答の一般化として
from __future__ import with_statement 



with open('file.xml', 'w') as file: 
    file.write(r''' 
<sample> 
<!DOCTYPE sample SYSTEM "location/sample.dtd"> 
<attributes> xyz 
</attributes> 
</sample>''') 
+0

実際にあなたが提供する解決策は、xmlファイルが小さいが、実際のxmlが非常に巨大で、そのようなdtd情報を追加するのがクリーンな方法ではない場合はOKです。だから、私は完全なXMLとjuztを提供する必要はありませんどのようなクリーンな方法はありますか? dtdをどこに追加するか。 – Learner

+0

よろしくお願いいたします。私はあなたが書いているファイルについて多くのことを知らないのですが、何度ファイルにが出現しますか? – WildCard

+0

私はdoctypeを任意のXMLファイルに挿入したいと確信しています。固定XMLを書くことは全く役に立たない。 –

0

:あなたはファイル全体を書き直し、またはあなたが 後に挿入する必要がない場合

fp = open(xml_filepath, 'r') 
content = fp.readlines() 
fp.close() 

final_content = content[:1] 
final_content.append('<!DOCTYPE sample SYSTEM "location/sample.dtd">') 
final_content.extend(content[1:]) 

fp = open(xml_filepath, 'w') 
fp.writelines(final_content) 
fp.close() 
+0

そして、2番目以外の行にコンテンツを挿入したい場合は、(n + 1)番目の位置: content = content [:n] .append( '...')。extend(コンテンツ[n:]) – Schmouk

+0

あなたが言ったように私はしましたが、 'str'オブジェクトが 'append'属性を持たないため、エラーが発生しました – Learner

+0

ok。私の間違いはタイプミスです。解決策は、前のコメントと同じようにcontent:content [:1] .append( '...')。extend(content [1:])を読み、 'n'を '1'に置き換えます。 content [0]は実際には文字列ですが、content [:1]は前のリストの最初の項目だけを含むリストです。 – Schmouk

関連する問題