2012-05-15 70 views
1

我正在使用DataContractSerializer將對象列表序列化爲XML。對象屬性的數據來​​自數據庫,數據庫中的列可以包含XML中無效的控制字符。
是否有可能以某種方式指示DataContractSerializer自動排除無效的控制字符?使用DataContractSerializer排除控制字符

下面是我使用

serializer = new DataContractSerializer(myList.GetType()); 
using(var ms = new MemoryStream()) 
{ 
    serializer.WriteObject(ms, myList); 
    return Encoding.UTF8.GetString(ms.ToArray()); 
} 

回答

1

的代碼,我認爲這樣做是添加一個單獨的屬性進行序列化(也可以是甚至私人)最簡單的方法。在這個屬性中,你可以返回字符串來序列化(沒有控制字符)。

例如:

[DataContract] 
public class MyClass 
{ 
    public string MyProperty { get; set; } 

    [DataMember] 
    private string MyPropertyForSerialization 
    { 
     get 
     { 
      return RemoveControlCharacters(this.MyProperty); 
     } 
     set 
     { 
      this.MyProperty = value; 
     } 
    } 
} 

注意MyProperty打上DataMember屬性 - 在MyPropertyForSerialization標有代替的屬性。

該代碼還假設您有一個RemoveControlCharacters方法,該方法從指定的字符串中刪除控制字符。