簡體   English   中英

從DataContract刪除名稱空間不起作用

[英]Remove namespace from DataContract doesn't work

我必須使用兩個簡單的序列化/反序列化方法,

對應:

[System.Runtime.Serialization.DataContract(Namespace = "", Name = "PARAMS")]
    public sealed class CourseListRequest {

        [DataMember(Name = "STUDENTID")]
        public int StudentId { get; set; }

        [DataMember(Name = "YEAR")]
        public string Year { get; set; }

        [DataMember(Name = "REQUESTTYPE")]
        public int RequestType { get; set; }
    }

    public static string Serialize<T>(this T value) {
        if (value == null) throw new ArgumentNullException("value");
        try {
            var dcs = new DataContractSerializer(typeof (T));
            string xml;

            using (var ms = new MemoryStream()) {
                dcs.WriteObject(ms, value);
                xml = Encoding.UTF8.GetString(ms.ToArray());
            }
            return xml;
        }
        catch (Exception e) {
            throw;
        }
    }

    public static T Deserialize<T>(this string xml) where T : class {

        if (string.IsNullOrEmpty(xml)) {
            return default(T);
        }
        try {
            var dcs = new DataContractSerializer(typeof (T));
            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(xml))) {
                ms.Position = 0;
                return dcs.ReadObject(ms) as T;
            }
        }
        catch (Exception e) {
            throw;
        }
    }

result:

<PARAMS xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><REQUESTTYPE>36</REQUESTTYPE><STUDENTID>0</STUDENTID><YEAR>תשע</YEAR></PARAMS>

如何刪除xmlns:i =“ http://www.w3.org/2001/XMLSchema-instance”? 關於序列化

切換到使用XmlSerializer

System.Xml.Serialization.XmlSerializer

這將生成沒有名稱空間的純XML

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM