TAB、改行、キャリッジ リターンなどの特殊文字を属性値としてシリアル化するときに問題が発生しました。
このhttp://www.w3.org/TR/1999/WD-xml-c14n-19991109.html#charescapingによると、これらはそれぞれ&\#x9;
、&\#xA;
、としてエンコードする必要があり&\#xD;
ます。しかし、クロムで呼び出す:
var root = new DOMParser().parseFromString('<root></root>', 'text/xml').documentElement;
root.setAttribute('a', 'first\nsecond');
var serialized = new XMLSerializer().serializeToString(root);
< root a="first\nsecond"/>
改行をエスケープしない文字列を返します。
それを再度ロードするとき:
var loaded = new DOMParser().parseFromString(serialized, 'text/xml').documentElement;
loaded.getAttribute('a');
「最初の秒」を返し、改行はスペースだけに失われました。以前にこの問題に直面した人はいますか? どんな助けでも大歓迎です。
ありがとう、
ビクター