【问题标题】:Convert url-like string to xml string in C#?在C#中将类似url的字符串转换为xml字符串?
【发布时间】:2017-11-10 01:26:56
【问题描述】:

我在 AJAX 请求中将 xml/mathml 作为数据发送,而在 C# 的服务器端,我得到了这种文本:

%3Cmath%3E%0A%20%20%20%20%3Cmrow%3E%0A%20%20%20%20%20%20%20%20%3Cmsub%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cmi%3Ex%3C%2Fmi%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cmtext%3E12%3C%2Fmtext%3E%0A%20%20%20%20%20%20%20%20%3C%2Fmsub%3E%0A%20%20%20%20%20%20%20%20

所以,基本上是xml,但是xml基本字符转换成url之类的字符,%20、%3E、%0A等...

我的 API 控制器中有这个 POST 方法:

[HttpPost]
public HttpResponseMessage PostUpload(HttpRequestMessage req)
{
    string jsonContent = req.Content.ReadAsStringAsync().Result;
    Utility.Utility.WriteLineToConsole("json data post: " + jsonContent);

    return Request.CreateResponse(HttpStatusCode.OK, jsonContent);
} 

实用程序函数 WriteLineToConsole() 打印结果中的 jsonContent 和顶部文本。

如何将上面的字符串转换为 xml,即将类似 url 的字符替换为 xml 字符?

注意:我使用的是 MVC 4 / C# 、jQuery AJAX,并且 contentType 和 dataType 都是 json 类型。我希望我的数据对象像

data:{mathml: "<math>...</math>"}

【问题讨论】:

  • 好像是urlencoded。试试Server.Decode(thatString);HttpUtility.UrlDecode(thatString)Uri.UnescapeDataString(thatString)
  • 似乎 contentType 没有在 ajax 调用中正确设置。检查this
  • 顺便说一句,当您显然是在发送 xml 时,为什么要将它设置为 json?似乎application/xml; charset=UTF-8 更合适。
  • @Kyle, Uri.UnescapeDataString 会很好用 - dotnetfiddle.net/zLkawf。我猜甚至可以标记为stackoverflow.com/questions/12898556/… 的重复项。
  • 我认为你需要使用 System.Net.WebUtility.HtmlDecode & System.Net.WebUtility.HtmlEncode。除了某些特殊字符之外,HTML 不会:en.wikipedia.org/wiki/...

标签: c# jquery ajax xml asp.net-mvc-4


【解决方案1】:
HttpUtility.UrlDecode(thatString)

完成任务

【讨论】:

    猜你喜欢
    • 2021-05-16
    • 2013-06-12
    • 1970-01-01
    • 2020-10-12
    • 2012-10-26
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多