2012-02-06 167 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