5

私はPythonのxmlminidomを使用していますが、テキストシーケンスでは、&quotの代わりにエスケープ文字を書き出すことを除いて、すべてうまく機能します"。もちろん、タグに引用符が含まれている場合、これは理にかなっていますが、テキストではバグがあります。これを変更するにはどうすればよいですか?

4

1 に答える 1

5

ソース(重要な場合は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のクイックスキャンは、<と&のみをエンコードする必要があることを示しています。

于 2011-08-11T18:53:50.980 に答える