Exemple #1
0
        /// <summary>
        /// 把ocr返回的xml数据 解析成对象
        /// </summary>
        /// <param name="xml"></param>
        private void OcrXmlToHddz(string xml, out yw_hddzEntity model, out List <yw_hddz_spxxEntity> list)
        {
            model = new yw_hddzEntity();
            list  = new List <yw_hddz_spxxEntity>();
            string      strError = "";
            XmlDocument doc      = new XmlDocument();

            doc.LoadXml(xml);
            XmlNodeList xnl = doc.GetElementsByTagName("yw_hddz");

            if (xnl.Count == 0)
            {
                throw new Exception("返回的xml中不包含yw_hddz");
            }
            XmlNode mainxn = xnl.Item(0);

            //string jsonText = JsonConvert.SerializeXmlNode(mainxn);
            //JObject obj = JsonConvert.DeserializeObject(jsonText) as JObject;
            //if (obj["yw_hddz"]["invoice_date"] != null)//发票日期格式判定
            //{
            //    string str = obj["yw_hddz"]["invoice_date"].ToString().Replace("\"", "");
            //    DateTime d = new DateTime();
            //    if (!DateTime.TryParse(str, out d))
            //    {
            //        throw new Exception("OCR返回的发票日期为" + str + "格式错误,日期格式为yyyy.MM.dd!");
            //    }
            //}

            // yw_hddzXmlData data = JsonConvert.DeserializeObject<yw_hddzXmlData>(jsonText);
            model = ModelTools.ConvertXmlToModel <yw_hddzEntity>(mainxn.OuterXml, out strError);
            if (!string.IsNullOrEmpty(strError))
            {
                throw new Exception("返回的xml主表yw_hddz解析错误!详细:" + strError);
            }
            XmlNodeList detailsxnl = mainxn.SelectNodes("details/yw_hddz_spxx");
            var         i          = 1;

            foreach (XmlNode spxn in detailsxnl)
            {
                //string jsonText1 = JsonConvert.SerializeXmlNode(spxn);
                yw_hddz_spxxEntity spitem = ModelTools.ConvertXmlToModel <yw_hddz_spxxEntity>(spxn.OuterXml, out strError);
                //yw_hddz_spxxXmlData data1 = JsonConvert.DeserializeObject<yw_hddz_spxxXmlData>(jsonText1);
                if (string.IsNullOrEmpty(strError))
                {
                    //spitem = data1.yw_hddz_spxx;
                    //spitem.ywbh = ywbh;
                    spitem.cxh  = i++;
                    spitem.sppp = spitem.sppp_yw;
                    spitem.sppz = spitem.sppz_yw;
                    spitem.spdj = spitem.spdj_yw;
                    spitem.spgg = spitem.spgg_yw;

                    list.Add(spitem);
                }
                else
                {
                    throw new Exception("返回的xml从表yw_hddz_spxx解析错误!详细:" + strError);
                }
            }
        }
        /// <summary>
        /// 把ocr返回的xml数据 解析成对象
        /// </summary>
        /// <param name="xml"></param>
        private void OcrXmlToHddz(string xml, out yw_hddzEntity model, out List <yw_hddz_spxxEntity> list)
        {
            model = new yw_hddzEntity();
            list  = new List <yw_hddz_spxxEntity>();

            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);
            XmlNodeList xnl = doc.GetElementsByTagName("yw_hddz");

            if (xnl.Count == 0)
            {
                throw new Exception("返回的xml中不包含yw_hddz");
            }
            XmlNode mainxn   = xnl.Item(0);
            string  jsonText = JsonConvert.SerializeXmlNode(mainxn);
            JObject obj      = JsonConvert.DeserializeObject(jsonText) as JObject;

            if (obj["yw_hddz"]["invoice_date"] != null)//发票日期格式判定
            {
                string   str = obj["yw_hddz"]["invoice_date"].ToString().Replace("\"", "");
                DateTime d   = new DateTime();
                if (!DateTime.TryParse(str, out d))
                {
                    throw new Exception("OCR返回的发票日期为" + str + "格式错误,日期格式为yyyy.MM.dd!");
                }
            }

            yw_hddzXmlData data = JsonConvert.DeserializeObject <yw_hddzXmlData>(jsonText);

            if (data != null && data.yw_hddz != null)
            {
                model = data.yw_hddz;
                //if (string.IsNullOrEmpty(ywbh))//如果是添加 则构建ywbh
                //    ywbh = new Interfaces.Service.HddzService().GetNewYwbh(DateTime.Now.ToString("yy") + "OC");
                //model.ywbh = ywbh;
            }
            else
            {
                throw new Exception("返回的xml解析错误!");
            }
            XmlNodeList detailsxnl = mainxn.SelectNodes("details/yw_hddz_spxx");
            var         i          = 1;

            foreach (XmlNode spxn in detailsxnl)
            {
                string              jsonText1 = JsonConvert.SerializeXmlNode(spxn);
                yw_hddz_spxxEntity  spitem    = new yw_hddz_spxxEntity();
                yw_hddz_spxxXmlData data1     = JsonConvert.DeserializeObject <yw_hddz_spxxXmlData>(jsonText1);
                if (data1 != null && data1.yw_hddz_spxx != null)
                {
                    spitem = data1.yw_hddz_spxx;
                    //spitem.ywbh = ywbh;
                    spitem.cxh = i++;
                    list.Add(spitem);
                }
            }
        }