2016-11-24 8 views
0

Rhino JavaScriptを使用していますが、XMLを操作してJSONフィールドでAPI経由で送信できるようにしたいと考えています。私は、例えばJavaScriptを使用してJSON APIで使用するXMLを変更する

<Data> 
    <Employee name="John" Surname="Smith"> 
</Data> 

をXMLを次していた場合、私はこのフォームでそれを望むので

CFLR (new Line) replace with \r\n 
" replace with \" 
\ replace with \/ 

:私は、次のエスケープを行うために探しています

<Data>\r\n<Employee>name=\"John\"Surname=\"Smith\">\r\n<\/Data> 

誰を支援することができますこの? JavaScriptで関数.replaceが存在することは知っていますが、新しい行をどのように置き換え、大規模なXMLを使ってパフォーマンスを向上させるために.replaceがどのように機能するかについては固執しています。

ありがとう、私は助けていただきありがとうございます。

答えて

0

ここでそれを行うための一つの方法だ:G @クリス

var xml = "<Data>\r\n<Employee name=\"John\" Surname=\"Smith\">\r\n</Data>"; 
 

 
console.log(xml); 
 

 
String.prototype.replaceAll = function(search, replacement) { 
 
    var target = this; 
 
    return target.split(search).join(replacement); 
 
}; 
 
xml = xml.replaceAll("\"", "\\\"").replaceAll("\r\n", "\\r\\n"); 
 

 
console.log(xml);

+0

おかげで、それは素晴らしい作品。君はスター!! – SSS

+0

誰かが多分関数がコードスニペットで何をしているのかを私に説明することができます。 つまり、var target = thisとは何ですか。 なぜ分割して参加するのですか? ありがとう – SSS

+0

'this'は文字列そのもので、置換呼び出しの対象です。分割と結合は、置換を行うための簡単なトリックです。 「ABCDE」の「C」を「C」に置き換えたいとします。 split( 'C')はそれを '[" AB "、" DE "]'に変換します。 join( 'c')は配列を文字列に戻します: '' ABcDE "' –

関連する問題