2013-07-31 33 views
2

我有一個類,我想把XML(實際上)是非轉義的。它不符合規範,因爲它可以是任意的html。我怎樣才能做到這一點?如何將未轉義的XML放入類的XmlText字段中?

例:

public class Material 
{ 
    [XmlElement(ElementName = "mattext")] 
    public string MaterialText { get; set; } 


    public bool ShouldSerializeMaterialText() 
    { 
     return !string.IsNullOrEmpty(MaterialText); 
    } 
} 

如果你把:<p>test</p>MaterialText,它產生&lt;p&gt;test&lt;/p&gt;在它的串行輸出。我如何修改這個以產生字符串文字AS XML而不是轉義序列?

要清楚,我正在尋找的輸出是:<mattext><p>test</p></mattext>

順便說一句 - 這不是我的第一選擇,但它是別人的模式,它必須,遺憾的是,要堅持。

謝謝!

+0

你不想把CDATA節點中的「內部XML」? –

+0

您可以將其放入CDATA中或將XmlIgnore放入MaterialText中,並添加另一個屬性,該屬性基於MaterialText中的XML返回XmlElement。 –

+0

@ D.R。 - 我很樂意將它放入CDATA中,但不幸的是,如果按照我所描述的方式構建,我只能通過驗證。 –

回答

1

如果您不能使用CDATA部分,你必須使用以下解決方法:

public class Material 
{ 
    [XmlIgnore] 
    public string MaterialText { get; set; } 

    [XmlElement(ElementName = "mattext")] 
    public XmlElement MatText 
    { 
     get { 
      var doc = new XmlDocument(); 
      doc.LoadXml(MaterialText); 
      return doc.DocumentElement; 
     } 
     set { /* implement in a similar way */ } 
    } 

(你當然可以添加一些類型的緩存爲吸氣)

+1

完美,這就像一個魅力。感謝您的教訓! –

相關問題