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

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

將帶有點 (.) 的 XML 標記映射到 C# 對象

將帶有點 (.) 的 XML 標記映射到 C# 對象

C#
拉丁的傳說 2022-06-18 17:13:16
我有一些帶有點(。)的標簽的 XML 文件,現(xiàn)在我正在使用“StringWriter”用 C# 映射 XML 數(shù)據(jù),但我無法處理標簽名稱中帶有點(。)的 XML 標簽,例如:-” Customer.Name”,我如何將其映射到 C# 類。我已經(jīng)用我的類模型給了 XmlElement,但我仍然沒有用我的類獲得值映射。任何人都可以給我建議。[XmlElement(ElementName = "PARENTNAME")]   public string PARENTNAME { get; set; }  //This is perfect mapped[XmlElement(ElementName = "DISPLAYCONTACT.CONTACTNAME")]public string DISPLAYCONTACTCONTACTNAME { get; set; } // This is not mapped[XmlElement(ElementName = "DISPLAYCONTACT.COMPANYNAME")]public string DISPLAYCONTACTCOMPANYNAME { get; set; }將 XML 轉換為 C#XmlDocument doc = new XmlDocument();doc.LoadXml(custome?rString);StringWriter sw = new StringWriter();XmlTextWriter xw = new XmlTextWriter(sw);doc.WriteTo(xw);String XmlString = sw.ToString();string xmlToJson = JsonConvert.SerializeXmlNode(doc);var deserialized = JsonConvert.SerializeXmlNode(doc);var custome?r = new CusGetResIn();custome?r= JsonConvert.DeserializeObject<CusGetResIn>(deserialized);也試過: -XmlSerializer serializer = new XmlSerializer(typeof(CusGetResIn));MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(XmlString));CusGetResIn resultingMessage = (CusGetResIn)serializer.Deserialize(memStream);
查看完整描述

2 回答

?
精慕HU

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

快速測試節(jié)目XmlSerializer可以很容易地處理這個問題


測試類:


[XmlRoot]

public class Test

{

    [XmlElement(ElementName="Foo.Alpha")]

    public string Alpha {get;set;}


    [XmlElement(ElementName="Foo.Beta")]

    public string Beta {get;set;}

}

示例方法:


private static void Main()

{

    var src = @"<Test>

    <Foo.Alpha>value 1</Foo.Alpha>

    <Foo.Beta>value 2</Foo.Beta>

    </Test>";


    using (var sreader = new StringReader(src))

    using (var reader = XmlReader.Create(sreader))

    {

        var serializer = new XmlSerializer(typeof(Test));

        var test = (Test)serializer.Deserialize(reader);

        Console.WriteLine(test.Alpha);

        Console.WriteLine(test.Beta);

    }

}

更新:由于您正在處理的 XML 文檔非常大,您應該考慮您實際需要做什么。如果您需要將整個文檔作為對象進行操作,那么 JP Hellemons 的答案中采用的方法可能是可行的方法。如果您只對某些字段感興趣,那么最好將 XML 加載到XDocumentorXmlDocument中并從中提取您感興趣的字段,或者甚至編寫一個只進的解析器XmlReader來做同樣的事情。


查看完整回答
反對 回復 2022-06-18
?
BIG陽

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

我已將您的 XML 粘貼到XMLFile1.xml中并將其粘貼到 Visual Studio 中以生成類,因此這將是很多自動生成的代碼...警告


不適合自動生成代碼...


正文限制為 30000 個字符;你輸入了 93977


完整代碼在這里: https ://pastebin.com/VxzNUjsv


較小的版本:


<?xml version="1.0" encoding="UTF-8"?>

<customer>

  <RECORDNO>5</RECORDNO>

  <CUSTOMERID>CUST-00101</CUSTOMERID>

  <PARENTNAME>parent</PARENTNAME>

  <DISPLAYCONTACT.CONTACTNAME>Sun Microsystems - EBC(CCUST-00101)</DISPLAYCONTACT.CONTACTNAME>

  <DISPLAYCONTACT.COMPANYNAME>Sun Microsystems - EBC</DISPLAYCONTACT.COMPANYNAME>

</customer>

和 C# 代碼:


class Program

    {

        static void Main(string[] args)

        {


            using (var sreader = new StringReader(File.ReadAllText(@"C:\Users\JP\source\repos\soXmlParsing\soXmlParsing\XMLFile1.xml")))

            using (var reader = XmlReader.Create(sreader))

            {

                var serializer = new XmlSerializer(typeof(customer));

                var test = (customer)serializer.Deserialize(reader);

                Console.WriteLine(test.PARENTNAME);

                Console.WriteLine(test.DISPLAYCONTACTCONTACTNAME);

            }

        }

    }



    // NOTE: Generated code may require at least .NET Framework 4.5 or .NET Core/Standard 2.0.

    /// <remarks/>

    [System.SerializableAttribute()]

    [System.ComponentModel.DesignerCategoryAttribute("code")]

    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]

    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]

    public partial class customer

    {


        private byte rECORDNOField;


        private string cUSTOMERIDField;


        private string pARENTNAMEField;


        private string dISPLAYCONTACTCONTACTNAMEField;


        private string dISPLAYCONTACTCOMPANYNAMEField;


        /// <remarks/>

        public byte RECORDNO

        {

            get

            {

                return this.rECORDNOField;

            }

            set

            {

                this.rECORDNOField = value;

            }

        }


        /// <remarks/>

        public string CUSTOMERID

        {

            get

            {

                return this.cUSTOMERIDField;

            }

            set

            {

                this.cUSTOMERIDField = value;

            }

        }


        /// <remarks/>

        public string PARENTNAME

        {

            get

            {

                return this.pARENTNAMEField;

            }

            set

            {

                this.pARENTNAMEField = value;

            }

        }


        /// <remarks/>

        [System.Xml.Serialization.XmlElementAttribute("DISPLAYCONTACT.CONTACTNAME")]

        public string DISPLAYCONTACTCONTACTNAME

        {

            get

            {

                return this.dISPLAYCONTACTCONTACTNAMEField;

            }

            set

            {

                this.dISPLAYCONTACTCONTACTNAMEField = value;

            }

        }


        /// <remarks/>

        [System.Xml.Serialization.XmlElementAttribute("DISPLAYCONTACT.COMPANYNAME")]

        public string DISPLAYCONTACTCOMPANYNAME

        {

            get

            {

                return this.dISPLAYCONTACTCOMPANYNAMEField;

            }

            set

            {

                this.dISPLAYCONTACTCOMPANYNAMEField = value;

            }

        }

    }


查看完整回答
反對 回復 2022-06-18
  • 2 回答
  • 0 關注
  • 131 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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