2015-11-03 2 views
0

Использования C# Я пытаюсь написать функцию, которая принимает файл XML, и выводит стандартный файл JavaScript с содержанием XML присвоенного строки переменнойсоздать правовой файл JavaScript с помощью C#

например

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, безусловно, не удастся.

любые идеи, как это можно сделать безболезненно?

+0

Вы пробовали это: http://stackoverflow.com/a/ 27574931/573218 –

+0

правильный способ записи C# и JS отдельно и вызов C# из JS (например, Web API) для получения необходимой информации. –

+0

@JohnKoerner сообщение описывает, как получить строку, закодированную с использованием веб-фреймворка, у меня нет этих utils в моем распоряжении, только C# (no @ {cats} нотация) – Mike

ответ

1

Читать весь текст из файла XML, используя следующий метод в пространстве имен System.IO:

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/

1

Вы можете попробовать Json.Net. Это сериализатор для JSON (подмножество Javascript). Просто попробуйте:

string xmlInJavascript = JsonConvert.SerializeObject("<root><item1>123</item1></root>"); 
Смежные вопросы