Pythonのetree持つXMLファイルを作成するとき、我々はSubElement
を使用してファイルに空のタグを記述する場合は、私が手:Pythonのetree制御空のタグ形式
<MyTag />
、Fortranのdoesnのに使用される当社のXMLパーサライブラリそれが正しいタグであってもこれを処理しません。
<MyTag></MyTag>
etreeの書式設定規則などを変更する方法はありますか?
Pythonのetree持つXMLファイルを作成するとき、我々はSubElement
を使用してファイルに空のタグを記述する場合は、私が手:Pythonのetree制御空のタグ形式
<MyTag />
、Fortranのdoesnのに使用される当社のXMLパーサライブラリそれが正しいタグであってもこれを処理しません。
<MyTag></MyTag>
etreeの書式設定規則などを変更する方法はありますか?
は、ドキュメントを書き出すためにhtml
メソッドを使用します。
>>> from xml.etree import ElementTree as ET
>>> ET.tostring(ET.fromstring('<mytag/>'), method='html')
'<mytag></mytag>'
write()
methodとtostring()
functionサポートmethod
キーワード引数の両方、あなたは、Python 2.7またはアップを使用して提供します。
以前のバージョンのPythonでは、外部ElementTreeライブラリをインストールできます。バージョン1.3ではそのキーワードがサポートされています。
はい、ちょっと変わったようですが、html
の出力のほとんどは、空の要素を開始タグと終了タグとして出力します。いくつかの要素はまだ空のタグ要素として終わります。具体的には<link/>
,<input/>
,<br/>
などである。それでも、Fortran XMLパーサをアップグレードして、標準に準拠したXMLを実際に解析してください!
あなたが利用可能sedをしている場合、あなたは可能性があり、パイプ<Tag />
のいずれかの発生を見つけて、空のtext
を追加<Tag></Tag>
ことによってそれを置き換えます
sed -e "s/<\([^>]*\) \/>/<\1><\/\1>/g"
にあなたのPythonスクリプトの出力は別のオプションです:
etree.SubElement(parent, 'child_tag_name').text=''
しかし、これは表現だけでなく、文書の内容:child_el.text
はNone
の代わりに''
になります。
ああ、Martijn氏によると、より良いライブラリを使用しようとしています。
write('<' + tagname)
...
if node.text or len(node): # this line is literal
write('>')
...
write('</%s>' % tagname)
else:
write(' />')
私は次のように作成したプログラムカウンタを操縦するために:コードを言い換え
は、私が使用ElementTree.py
のバージョンが_write
方法で、以下が含まれてい
class AlwaysTrueString(str):
def __nonzero__(self): return True
true_empty_string = AlwaysTrueString()
それから私はnode.text = true_empty_string
を設定しましたそれらのElementTreeノードでは、自己閉じのタグではなく、開いた閉じタグが必要です。
「プログラムカウンタを操作する」とは、入力のセット(この場合はやや興味深い真理テストを持つオブジェクト)をライブラリメソッドに組み込んで、ライブラリメソッドの呼び出しがコントロールフローグラフを途中まで横断することを意味します私はそれが欲しい。これは馬鹿げたことです。ライブラリの新しいバージョンでは、私のハックが壊れるかもしれません。おそらく、 "力"は "ほぼ保証されている"と考えるべきです。一般に、抽象化障壁を壊さないでください。それはちょうどここで私のために働いた。
これはPython 3.4で直接解決されました。ないコンテンツが含まれていない要素のフォーマットを制御
:次にから、xml.etree.ElementTree.ElementTree
のwrite
方法はshort_empty_elements
パラメータを有しています。 True(デフォルト)の場合、それらは単一の自己閉じタグとして出力されます。そうでない場合は、開始タグと終了タグのペアとして出力されます。
詳細はxml.etree documentationです。
残念ながら、使用するFortran XMLパーサーは他にありません。これが唯一の選択肢です。ありがとう! – tpg2114
タグの大文字小文字を維持する方法がありますか?明らかに大文字と小文字の区別も問題であり、 'html'は大文字小文字を保持しません。 – tpg2114
@ tpg2114:いいえ、申し訳ありません。 –