私はPythonのxmlminidomを使用していますが、テキストシーケンスでは、"
の代わりにエスケープ文字を書き出すことを除いて、すべてうまく機能します"
。もちろん、タグに引用符が含まれている場合、これは理にかなっていますが、テキストではバグがあります。これを変更するにはどうすればよいですか?
1 に答える
ソース(重要な場合はPython 3.2)を見ると、これは_write_data()関数にハードコーディングされています。TextNodeのwritexml()メソッドを、サブクラス化するか、単に編集して、そのメソッドを呼び出さないように変更する必要がありますが、代わりに<と>のみをエスケープするのと同様のことを行います。
パッケージの外部にサブクラスを作成した場合(パッケージをコピーしてハッキングして独自のカスタムxmlminidomを作成する代わりに)、少し注意すれば、うまく機能するように見えます。したがって、独自の(サブクラスの)TextNodeを作成し、上記のように変更してから、DOMにテキストを追加するには、新しいクラスのインスタンスを追加します(または既存のテキストノードをそのクラスのインスタンスに置き換えます)。ownerDocument属性を設定する必要があります。おそらく最も簡単なのは、Documentをサブクラス化し、createTextNode()メソッドを修正することです。
しかし、私はあなたが望むことをするより簡単な方法を見ていません。より良いdom実装を使用するのが最善かもしれません。
ps私はこの振る舞いがxml仕様で要求されているかどうかわかりません。更新: http://www.w3.org/TR/2008/REC-xml-20081126/#syntaxのクイックスキャンは、<と&のみをエンコードする必要があることを示しています。