使用c创建一个合法的javascript文件

create a legal javascript file using c#

本文关键字:javascript 文件 一个 创建 使用      更新时间:2023-09-26

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

示例

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字符串肯定会失败。

有什么想法可以无痛地完成吗?

在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/

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

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