第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 ElementName 而不是屬性名稱序列化對象?

如何使用 ElementName 而不是屬性名稱序列化對象?

C#
蝴蝶刀刀 2021-11-14 15:40:10
我在使用DataContractSerializer. 我面臨的問題是生成的 XML 文件總是具有為類和字段定義名稱的標簽,而不是在XmlRoot或XmlElement使用ElementName屬性中設(shè)置的名稱。例如對于定義如下的類:[XmlRoot(ElementName = "customer")]public class Customer{    [XmlElement(ElementName = "name")]    public string Name { get; set; }    [XmlElement(ElementName = "address")]    public string Address { get; set; }}在我的情況下生成的 XML 總是:<Customer>    <Name>abc</Name>    <Address>xyz</Address></Customer>而我希望得到的輸出是ElementName小寫的輸出:<customer>    <name>abc</name>    <address>xyz</address></customer>我正在使用擴展方法通過 C# 對象使用以下方法進行序列化:public static XDocument SerializeToXElement(object o){    XDocument doc = new XDocument();    using (var writer = doc.CreateWriter())    {        var serializer = new DataContractSerializer(o.GetType());        XmlSerializerNamespaces ns = new XmlSerializerNamespaces();        ns.Add("", "");        serializer.WriteObject(writer, o);    }    doc.StripNamespace();    return doc;}我的序列化函數(shù)中還調(diào)用了另一個擴展方法來從 my 中去除命名空間XDocument,如下所示:public static void StripNamespace(this XDocument document){    if (document.Root == null) return;    foreach (var element in document.Root.DescendantsAndSelf())    {        element.Name = element.Name.LocalName;        element.ReplaceAttributes(GetAttributesWithoutNamespace(element));    }}我該怎么做才能使 DataContractSerializer 使用ElementName而不是類/屬性名稱?
查看完整描述

2 回答

?
蝴蝶不菲

TA貢獻1810條經(jīng)驗 獲得超4個贊

根據(jù)我的評論,您應(yīng)該使用 DataContract 和 DataMember 屬性而不是XmlRootand XmlElement:


[DataContract(Name = "customer", Namespace = "")]

public class Customer

{

    [DataMember(Name = "name")]

    public string Name { get; set; }


    [DataMember(Name = "address")]

    public string Address { get; set; }

}


查看完整回答
反對 回復(fù) 2021-11-14
?
呼喚遠方

TA貢獻1856條經(jīng)驗 獲得超11個贊

這應(yīng)該對你有用,


[XmlRoot("customer")]

public class Customer

{

    [XmlElement("name")]

    public string Name { get; set; }

    [XmlElement("address")]

    public string Address { get; set; }

}


查看完整回答
反對 回復(fù) 2021-11-14
  • 2 回答
  • 0 關(guān)注
  • 226 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號