使用c#

时间:2015-11-03 14:23:49

标签: javascript c# xml string escaping

使用c#我正在尝试编写一个接收XML文件的函数, 并输出一个JavaScript文件,其XML内容分配给字符串变量

例如

XML输入:a.xml

<root>
 <book id="a">
   SAM 
 </book>
 <book id="b">
 </book>
   MAX
</root>

JS输出:b.js

var xml =   "<root><book id='a'>SAM</book><book id='b'></book>MAX</root>";

我正在寻找一种创建合法输出的简单方法,因为尝试手动转义所有xml字符以创建合法的js字符串肯定会失败。

任何想法如何可以无痛地完成?

2 个答案:

答案 0 :(得分:1)

您可以尝试Json.Net。它是JSON的序列化程序(Javascript的子集)。试试吧:

string xmlInJavascript = JsonConvert.SerializeObject("<root><item1>123</item1></root>");

答案 1 :(得分:1)

使用System.IO命名空间中的以下方法读取XML文件中的所有文本:

public static string ReadAllText(
    string path
)

将此传递给System.Web命名空间中的以下方法(需要.NET 4.6):

public static string JavaScriptStringEncode(
    string value,
    bool addDoubleQuotes
)

组合代码如下所示:

string xml = File.ReadAllText(@"..\..\a.xml");
string js = HttpUtility.JavaScriptStringEncode(xml, false);
File.WriteAllText(@"..\..\b.js", string.Format("var xml=\"{0}\";", js));

鉴于您提供的XML示例,生成的JS如下所示:

var xml="\u003croot\u003e\r\n    \u003cbook id=\"a\"\u003e\r\n        SAM\r\n    \u003c/book\u003e\r\n    \u003cbook id=\"b\"\u003e\r\n    \u003c/book\u003e\r\n    MAX\r\n\u003c/root\u003e";

这是小提琴: https://jsfiddle.net/o1juvc0f/