2018年11月14日 星期三

xml 轉 class 並做條件篩選

//class 宣告時用list不要用array

//篩選時用removeall

           
// 透過XmlDocument讀入
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(service_result.Replace("<n:", "<").Replace("</n:", "</").Replace(" n:", " "));
            // 讀取HEADER節點
            XmlNode responseNode = xmlDoc.LastChild;
            // 透過Json.NET將XmlNode轉為Json格式字串
            string jsonText = JsonConvert.SerializeXmlNode(responseNode);

            jsonText = jsonText.Replace("@", "");
            var obj = JsonConvert.DeserializeObject(fortifyService.PathManipulation(jsonText));
            var f = JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.Indented);

            // 透過Json.NET反序列化為物件
            var responseObj = JsonConvert.DeserializeObject<Response>(fortifyService.PathManipulation(f));

            for (int i = 0; i < responseObj.GETSEARCHRESULTS.OUTPUT.MATCHES.MATCH.Count(); i++)
            {
                if (i == 0)
                    responseObj.GETSEARCHRESULTS.OUTPUT.MATCHES.MATCH[i].SCORE = 70;

                if (i == 1)
                    responseObj.GETSEARCHRESULTS.OUTPUT.MATCHES.MATCH[i].SCORE = 90;
            }

            responseObj.GETSEARCHRESULTS.OUTPUT.MATCHES.MATCH.RemoveAll(x => x.SCORE < iScore);

       
        public class Response
        {
        public Header GETSEARCHRESULTS { get; set; }
        }

        public class Header
        {
            public Ouput OUTPUT { get; set; }
        }

        public class Ouput
        {
            public string TRANSACTIONID { get; set; }
            public Matches MATCHES { get; set; }
            public Searchstate SEARCHSTATE { get; set; }
            public Approvestate APPROVESTATE { get; set; }
            public string ANNOTATION { get; set; }
            public string REQUESTTIME { get; set; }
            public string CIFRULE { get; set; }
        }

        public class Matches
        {
            public string COUNT { get; set; }
            public List<Match> MATCH { get; set; }
        }

        public class Match
        {
            public string N { get; set; }
            public string MATCHNAME { get; set; }
            public string ORIGINALSDNNAME { get; set; }
            public string MATCHTEXT { get; set; }
            public string MATCHPROGRAM { get; set; }
            public string MATCHTYPE { get; set; }
            public string MATCHREMARKS { get; set; }
            public int SCORE { get; set; }
        }

        public class Searchstate
        {
            public string STATUS { get; set; }
            public string DATETIME { get; set; }
        }

        public class Approvestate
        {
            public string APPROVED { get; set; }
            public string DATETIME { get; set; }
        }