2012-02-06 126 views
0

我曾尝试使用Json.Convert方法让我的内容转换成XML但是我的HTML内容进行编码(由json.net)Json.NET从JSON转换为XML

注:我没有访问对System.Web DLL

<br /> 
<br /> 

我的类:

public class TemplateContent 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public string VersionNumber { get; set; } 
    public string CoverPage { get; set; } 
    public string Body { get; set; } 
} 

我想要的道具封页 - 要在直线上升HTML编码没有

我的代码: 先转换成JSON ......(内容为上述目的)

 var json = JsonConvert.SerializeObject(content); 
     return json; 

然后转换为XML

 var myXmlNode = JsonConvert.DeserializeXNode(json, "Template"); 

可以将代码JsonConvert.DeserializeXNode这一点 - 被强制解码内容?或者将内容保留为转换为xml时的样子?

<Template> 
    <ID>14</ID> 
    <Name>name of report</Name> 
    <VersionNumber>1.0</VersionNumber> 
    <CoverPage> 






    &lt;br /&gt; 
    &lt;br /&gt; 
    &lt;h3 style="text-align: center;"&gt; 
    &lt;br class="GENTICS_ephemera" /&gt; 
    &lt;/h3&gt; 
    &lt;h3 style="text-align: center;"&gt; 
    &lt;br class="GENTICS_ephemera" /&gt; 
    &lt;/h3&gt; 
    &lt;h3 style="text-align: center;"&gt;Property Valuation Report&lt;/h3&gt;  

     </CoverPage> 
    <Body> 




    &lt;h4 style="text-align: center;"&gt;Property Valuation Report&lt;/h4&gt; 
    &lt;p&gt; 
    &lt;/p&gt; 
    &lt;p&gt; 
    &lt;/p&gt;</Body> 
</Template> 

enter image description here

+0

@Harron,你的XML是有效的,如果你用XML解析器解析它(或反序列化一个类)你会得到正确的(解码)值。 – 2012-02-06 14:57:01

+0

@ L.B - 我会怎么做? (对不起,我是一个新手) – Haroon 2012-02-06 14:58:12

+0

@LB - 是的,我的xml是有效的,所以我知道一半的工作已经完成 – Haroon 2012-02-06 14:58:51

回答

0

你的XML是有效的,如果你用XML解析器解析它(或反序列化到一个类),你会得到正确的(解码)值。例如,

string xmlx = @" 
<Template> 
    <ID>14</ID> 
    <Name>name of report</Name> 
    <VersionNumber>1.0</VersionNumber> 
    <CoverPage> 
&lt;br /&gt; 
&lt;br /&gt; 
&lt;h3 style=""text-align: center;""&gt; 
&lt;br class=""GENTICS_ephemera"" /&gt; 
&lt;/h3&gt; 
&lt;h3 style=""text-align: center;""&gt; 
&lt;br class=""GENTICS_ephemera"" /&gt; 
&lt;/h3&gt; 
&lt;h3 style=""text-align: center;""&gt;Property Valuation Report&lt;/h3&gt; 
    </CoverPage> 
</Template>"; 

XElement xelem = XElement.Load(new StringReader(xmlx)); 
string xmlvalue = xelem.Descendants("CoverPage").First().Value; 

将返回

<br /> 
<br /> 
<h3 style="text-align: center;"> 
<br class="GENTICS_ephemera" /> 
</h3> 
<h3 style="text-align: center;"> 
<br class="GENTICS_ephemera" /> 
</h3> 
<h3 style="text-align: center;">Property Valuation Report</h3> 

所以回答or leave the content as it is when converting into xml?

+0

奇怪...只是试过它,它不工作... ** < br/> **将无法运行 – Haroon 2012-02-06 15:19:57

+0

我已经运行了你的测试,它似乎工作*当*你实际上遍历标签,但是我正在使用xslt将上面编码的文档转换为xsl fo ...我的xslt文档没有选择它,我应该打开另一个问题吗? – Haroon 2012-02-06 15:24:53

+0

@哈罗,在我发布之前,我测试了上面的代码。它**可以**工作。只需将其复制粘贴到某个项目并尝试。 – 2012-02-06 15:26:39

1

尝试

var json = JsonConvert.SerializeObject(content.Replace("&lt;", "<").Replace("&gt;", "<")); 
return json; 
+0

没有访问system.web - 即使我做了,json .net破坏它,因为我在我的问题中说,所以这不会工作 – Haroon 2012-02-06 15:02:31

+0

好吧,尝试一个字符串替换。修改答案以反映。另外,如果这变得更加复杂,比如......需要解码实体,你可能只想编写一个函数,或者添加'使用System.Web'到你的类中,然后使用内置函数。 – pete 2012-02-06 15:31:24