【问题标题】:create a legal javascript file using c#使用 c# 创建一个合法的 javascript 文件
【发布时间】:2016-02-03 17:55:24
【问题描述】:

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

有什么想法可以轻松完成吗?

【问题讨论】:

  • 正确的做法是分别编写C#和JS,并从JS(例如Web API)调用C#来获取所需的信息。
  • @JohnKoerner 这篇文章描述了如何使用 Web 框架获取字符串编码,我没有这些工具可供我使用,只有 c#(没有 @{cats} 表示法)
  • @AlexSikilinda 我猜正确是基于使用情况,在我的情况下,我需要在发送之前存在文件以便在 js 引擎中进行解释。

标签: javascript c# xml string escaping


【解决方案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/

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-21
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 2019-11-29
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多