WCF Web API中将HTML序列化为XML和Json的问题 [英] HTML serializing issue in WCF Web API to XML and Json

查看:103
本文介绍了WCF Web API中将HTML序列化为XML和Json的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用WCF Web API服务通过Json和Xml发布一些数据.但是我对html字符串进行序列化有问题.

对于Xml序列化,我使用XmlMediaTypeFormatter()和对于Json序列化,我有使用Newtonsoft.Json库的CustomJSONMediaTypeFormatter类.

我使用Entity Framework从数据库中获取数据,就像下面的代码一样,我使用WCF Web api服务发布了数据.

  [WebGet(UriTemplate ="getLogin")]公共IQueryable< LoginTableDTO>登录(){var loginList = ltr.GetList();列表< LoginTableDTO>dtoList = new List< LoginTableDTO>();foreach(loginList中的LoginTable项目){dtoList.Add(LoginTableAssembler.ToDTO(item));}返回dtoList.AsQueryable();} 

但带有类似html的字符串

 < p><输入样式="float:right" type ="submit" name ="name" value =保存更改"/></p> 

来自数据库,序列化后返回

 & lt; p& gt;& lt;输入样式="float:right" type ="submit" name ="name" value ="Save Changes"/& lt;/p& gt; 

用于xml并返回

  \ u003cp \ u003e \ u003c输入样式= \浮点数:正确\" type = \提交\" name = \"name \" value = \保存更改\"/\ u003e \ u003c/p\ u003e 

杰森(Json).

如您所见,它们是不可读的.

我对datetime对象也有一些问题.但是我实际上找到了一种解决方案,可以在转换字符串之前进行处理,对此我并不满意.(这是另一个问题).

如何将HTML字符串(如普通字符串(不包含"html标记")序列化为XML和JSON?

预先感谢...

解决方案

我不是100%确定您想要什么,但是如果您想要的话:

 & lt; p& gt;& lt;输入样式="float:right" type ="submit" name ="name" value ="Save Changes"/& lt;/p& gt; 

成为:

 < p><输入样式="float:right" type ="submit" name ="name" value =保存更改"/></p> 

使用 http://msdn.microsoft.com/en-us/library/7c5fyk1k.aspx .问题是您需要转义HTML才能将其保存为XML....这意味着我认为下面的字符串看起来正确.

  \ u003cp \ u003e \ u003c输入样式= \浮点数:正确\" type = \提交\" name = \"name \" value = \保存更改\"/\ u003e \ u003c/p\ u003e 

I am using WCF Web API service to publish some data via Json and Xml. But I have a problem with html string to serialize it.

for Xml serialize I use XmlMediaTypeFormatter() and for Json serialize I have CustomJSONMediaTypeFormatter class which uses Newtonsoft.Json library.

I get data with Entity framework from database, and like code bellow I publish it with WCF web api service.

    [WebGet(UriTemplate = "getLogin")]
    public IQueryable<LoginTableDTO> Login()
    {
         var loginList = ltr.GetList();
        List<LoginTableDTO> dtoList = new List<LoginTableDTO>();
        foreach (LoginTable item in loginList)
        {
            dtoList.Add(LoginTableAssembler.ToDTO(item));
        }
    return dtoList.AsQueryable();
}

but with html strings like

<p><input style="float: right" type="submit" name="name" value="Save Changes" /></p>

which are coming from database, after serialize returns

&lt;p&gt;&lt;input style="float: right" type="submit" name="name" value="Save Changes" /&gt;&lt;/p&gt;

for xml and returns

\u003cp\u003e\u003cinput style=\"float: right\" type=\"submit\" name=\"name\" value=\"Save Changes\" /\u003e\u003c/p\u003e

for Json.

As you see they are not human readable.

I also have some problem with datetime object. but I found a solution to convert string before doing that prosses actually, I am not happy with it.(thats another issue).

What should I do for serializing HTML strings like normal strings (which are not have "html tags") to XML and JSON?

Thanks in advance...

解决方案

I'm not 100% sure what you want but if you want:

&lt;p&gt;&lt;input style="float: right" type="submit" name="name" value="Save Changes" /&gt;&lt;/p&gt;

to become:

<p><input style="float: right" type="submit" name="name" value="Save Changes" /></p>

use http://msdn.microsoft.com/en-us/library/7c5fyk1k.aspx. The problem is that you'll need to escape the HTML to save it to XML....meaning I think the string below looks right.

\u003cp\u003e\u003cinput style=\"float: right\" type=\"submit\" name=\"name\" value=\"Save Changes\" /\u003e\u003c/p\u003e

这篇关于WCF Web API中将HTML序列化为XML和Json的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆