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

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

有什么想法可以轻松地完成此操作吗?

最佳答案

使用 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";

这是 fiddle : https://jsfiddle.net/o1juvc0f/

关于javascript - 使用c#创建合法的javascript文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33501513/

相关文章:

c# - XmlReader - 读取没有换行符的 xml 文件时出现问题

java - Java中使用DOM读取XML数据

c# - 如何为 WebApiConfig 配置路由以将某些请求重定向到静态 html 页面?

c# - 将 XML 部分反序列化为对象

javascript - 纯Javascript数据发布

javascript - DOM 未使用绑定(bind)的 $scope 对象进行更新

c# - 将接口(interface)声明为类成员有什么用?

c# - 添加换行符

javascript - Observable 确定订阅者功能是否已完成

javascript - 触发<select>点击另一个元素的点击