使用c创建合法的javascript文件#

使用c创建合法的javascript文件#,javascript,c#,xml,string,escaping,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'&g

使用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>";
var xml=“SAMMAX”;
我正在寻找一种创建合法输出的简单方法,因为试图手动转义所有xml字符以创建合法js字符串肯定会失败

你知道如何无痛地完成吗?

你可以试试。它是JSON(Javascript的子集)的序列化程序。试试看:

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

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

public static string ReadAllText(
    string path
)
将其传递给System.Web命名空间(需要.NET 4.6)中的以下方法:

组合代码如下所示:

string xml = File.ReadAllText(@"..\..\a.xml");
string js = HttpUtility.JavaScriptStringEncode(xml, false);
File.WriteAllText(@"..\..\b.js", string.Format("var xml=\"{0}\";", 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";
根据您提供的XML示例,生成的JS如下所示:

string xml = File.ReadAllText(@"..\..\a.xml");
string js = HttpUtility.JavaScriptStringEncode(xml, false);
File.WriteAllText(@"..\..\b.js", string.Format("var xml=\"{0}\";", 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";
这是小提琴:

你试过这样做吗:正确的方法是分别编写C#和JS,并从JS(例如Web API)调用C#来获取所需信息。@JohnKoerner这篇文章描述了如何使用Web框架对字符串进行编码,我没有这些UTIL,只有C#(不{cats}符号)@AlexSikilinda我想正确的方法是基于用法,在我的例子中,我需要文件在发送之前存在,以便在js引擎中进行解释。