记:.net读取海关金二客户端回执报文

记:.net读取海关金二客户端回执报文,第1张

记:.net读取海关金二客户端回执报文

金二客户端回执报文有BUG,数组与对象不定回传,读取问题,按照节点读取报文内容,反序列化简单实现,不能通用,需要判断节点。

 using (FileStream fsRead = file.OpenRead())
            {
                string xmltext = string.Empty;
                int fsLen = (int)fsRead.Length;
                byte[] heByte = new byte[fsLen];
                int r = fsRead.Read(heByte, 0, heByte.Length);
                xmltext = System.Text.Encoding.UTF8.GetString(heByte);

                Xmldocument doc = new Xmldocument();
                doc.LoadXml(xmltext);//加载xml

                if (doc.GetElementsByTagName("Package").Count < 1)
                    return null;

                XmlElement package = (XmlElement)doc.GetElementsByTagName("Package")[0];

                if (package.GetElementsByTagName("EnvelopInfo").Count < 1)
                    return null;

                XmlElement envelopInfo = (XmlElement)package.GetElementsByTagName("EnvelopInfo")[0];

                nodeType = (envelopInfo["message_type"]).InnerText;

                if (package.GetElementsByTagName("DataInfo").Count < 1)
                    return null;

                XmlElement dataInfo = (XmlElement)package.GetElementsByTagName("DataInfo")[0];

                if (dataInfo.GetElementsByTagName("BussinessData").Count < 1)
                    return null;

                XmlElement bussinessData = (XmlElement)dataInfo.GetElementsByTagName("BussinessData")[0];

                if (bussinessData.GetElementsByTagName(nodeType).Count < 1)
                    return null;

                string text = JsonConvert.SerializeXmlNode(bussinessData.GetElementsByTagName(nodeType)[0]);

                JObject jObject = JObject.Parse(text);

                return jObject[nodeType].ToString();
            }

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5693555.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存