3

次の単純な xml を作成しました (C エスケープ シーケンスを使用) " <A>\n</A>" MSXML(v4 および v6) IXMLDOMDocument2.xml を使用して DOM ドキュメントをシリアル化すると、改行が dos 形式に変更され、<A>\r\n</A>代わりに " " が返されます。

DOM を使用して<A>要素内の文字列ノードのみを取得すると、正しい単一の文字("\n")列が取得されます。

もちろんpreserveWhiteSpace設定してますVARIANT_TRUE

XML.NetXerces パーサーは正常に動作し、xml ドキュメントのシリアル化中に保存された文字列を変更しません。

それは msxml のバグですか? 何か案が?

thxジリ

4

1 に答える 1

0

Microsoft は、w3wc 標準に準拠するために、MSXML 4 以降で改行シリアル化を処理する方法を変更しました ( http://support.microsoft.com/kb/261293を参照) 。

.Net の xml 実装に対して同じことが行われなかった理由はわかりませんが、.Net 2.0 の Web サービスに対しても同じことが行われます。

最後にこの問題が発生したとき、改行文字が予期せずにシリアル化される可能性があるという事実を説明する必要があるという結論に達しました (たとえば、に置き換えること\r\nにより\n)、またはテキストを base-64 でエンコードする必要があります (または同等のもの)。

于 2009-10-26T16:43:15.317 に答える