xml.etree.elementtree.Elementを使用してXML文書を作成しましたが、ElementTree.write()関数 を使用してXML文書を印刷したかったのですが出てくる宣言タグはPython:xml.etree.elementtree.ElemenTtree.write()宣言タグ
<?xml version='1.0' encoding='UTF-8'?>
二重引用符で囲む必要があります。それを変える方法はありますか?
xml.etree.elementtree.Elementを使用してXML文書を作成しましたが、ElementTree.write()関数 を使用してXML文書を印刷したかったのですが出てくる宣言タグはPython:xml.etree.elementtree.ElemenTtree.write()宣言タグ
<?xml version='1.0' encoding='UTF-8'?>
二重引用符で囲む必要があります。それを変える方法はありますか?
結局私は、ToString関数を使用して追加しますXMLを正しいタグ にコピーし、次にpythonのfile.write関数を使用します。 これは醜いです(実際にはファイルの実際のエンコーディングに関することですが)。
これを回避するために書いたコードを提供してもらえますか? –
pythonのElementTree.write
が二重引用符で囲まれているシングルクォートを必要とするさまざまな$職場ツールのハッキングのために、私はまったく同じことをしなければなりませんでした。 (コードの一部がリテラル文字列status='ok'
を探し、status="ok"
を認識しません。実際にはいくつかの点で問題がありますが、実際には回避する必要があります)。
幸いにも "user data" single二重引用符はそれぞれ'
と"
(それぞれ)としてエンコードされます。私の場合は、すでに(他の理由のために)tostring
ではなく、write
を使用して、私は持っていました:
import xml.etree.ElementTree as ET
# [... mass snippage]
text = ET.tostring(reply).replace('"', "'")
# [... snippaage]
self.wfile.write(text)
(。もちろん、あなたが代わりにreplace("'", '"')
をお勧めします)
私は同じ問題を抱えていましたが、ElementTree.pyのコードを見て、以下を見ました。
ルートタグ(単一引用符)については:私はそれを変更
write(" %s=\"%s\"" % (qnames[k], v))
それはそのようにハードコードされます...
:
if method == "xml":
write("<?xml version='1.0' encoding='%s'?>\n" % encoding)
と属性(二重引用符)について(ローカル)に:
"<?xml version=\"1.0\" encoding=\"%s\"?>\n"
すべての属性は二重引用符で囲まれています。
Uh ...なぜ二重引用符が必要ですか? –
これはなぜ重要なのでしょうか?これは、単一引用符または二重引用符でも同様に有効なxmlです。 – mata
その割り当てと何らかの理由で教師がxmlのdiffを行うためです。要素を比較する代わりに。 – Bg1987