これはまさに私が防ぎたいことです。
本当に?そのエスケープが適用されるかどうかは、一般的にまったく重要ではありません。どちらの XML 情報セットも同じです。
率直に言って、ドキュメントがまったくロードされないことに少し驚いています。
>
属性値に含めるのに完全に有効な文字です。XML でエスケープする必要がある唯一の場所>
は、仕様のあいまいでばかげた規則により、テキスト コンテンツ内のシーケンス内です。&
]]>
この問題について考える必要がないように、多くの XML シリアライザーは習慣的>
にテキスト コンテンツまたは属性値のどこでもエスケープします。
Canonical XML仕様では、出力を単純な文字列として比較できるように、XML ドキュメントをシリアル化する特定の方法が 1 つ指定されています。たとえば、属性をどのように順序付けるべきかを正確に示しています。Canonical XML は>
、テキスト コンテンツでのエスケープを支持しますが、属性値でのエスケープを否定しています。そのため、Canonical XML シリアライザーを使用してドキュメントを出力すると、その特定の値に対して期待した結果が得られます。(ただし、他の例でどのように見えるかは保証できません。)
次のようなXmlDsigC14NTransform (または XmlDsigC14NWithCommentsTransform)を使用して、.NET で canonicaliser を取得できます。
XmlDsigC14NTransform transform= new XmlDsigC14NTransform(false);
transform.LoadInput(doc);
Stream stream= (Stream) t.GetOutput(typeof(Stream));
// write stream to file