Beispiel #1
0
        private static xList <xList <string> > __sFtv = oba.getsFtvData();   // 国历节日,#表示放假日,I表示重要节日或纪念日

        #endregion



        #region 转换时新增的方法

        /// <summary>
        /// 从 Xml 文档对象加载 wFtv 数据
        /// </summary>
        /// <returns></returns>
        private static xList <string> getwFtvData()
        {
            xList <string> result = new xList <string>();

            //----------------------------------------------------------------------------------------
            // 加载 Xml 数据:  按周规则定义的节日(纪念日)
            // 注: 加载时自动去除各行 Xml 数据前、后端的所有空白字符, 但对数据内部的空白字符不作处理
            //----------------------------------------------------------------------------------------
            if (LunarHelper.SxwnlXmlData != null)
            {
                const string wFtvXPath = "SharpSxwnl/SxwnlData/Data[@Id = 'oba_wFtv']";
                XElement     foundNode;
                Regex        regexToTrim = new Regex(@"(^\s*)|(\s*$)"); // C#: 匹配任何空白字符

                // 读取并解开数据
                foundNode = LunarHelper.GetXmlNode("oba_wFtv");
                if (foundNode != null)
                {
                    string[] wftv = regexToTrim.Replace(foundNode.Value, "").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                    for (int i = 0; i < wftv.Length; i++)
                    {
                        result.Add(regexToTrim.Replace(wftv[i], ""));
                    }
                }
            }

            return(result);
        }
Beispiel #2
0
        /// <summary>
        /// 构造函数, 完成纪年表数据的加载
        /// </summary>
        public JnbArrayList()
        {
            //----------------------------------------------------------------------------------------
            // 加载 Xml 数据:  历史纪年表
            // 注: 加载时自动去除历史纪年表 Xml 数据中所有的空白字符
            //----------------------------------------------------------------------------------------
            if (LunarHelper.SxwnlXmlData != null)
            {
                // const string JnbXPath = "SharpSxwnl/SxwnlData/Data[@Id = 'obb_JNB']";

                XElement foundNode;
                Regex    regexToTrim = new Regex(@"\s*"); // C#: 匹配任何空白字符, 用于去除所有空白字符
                int      i;

                // 读取并解开历史纪年表
                // foundNode = LunarHelper.SxwnlXmlData.SelectSingleNode(JnbXPath);
                foundNode = LunarHelper.GetXmlNode("obb_JNB");
                if (foundNode != null)
                {
                    string[] JNB = regexToTrim.Replace(foundNode.Value, "").Split(',');

                    this.AddRange(JNB);
                    for (i = 0; i < JNB.Length; i += 7)
                    {
                        this[i]     = int.Parse((string)(this[i]));
                        this[i + 1] = int.Parse((string)(this[i + 1]));
                        this[i + 2] = int.Parse((string)(this[i + 2]));
                    }
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// 从 Xml 对象中读取农历节日的定义
        /// </summary>
        /// <returns></returns>
        private static xList <OB> getLunarFeasts()
        {
            const string xPath  = "SharpSxwnl/SxwnlData/Data[@Id = 'obb_getDayName']";
            xList <OB>   result = new xList <OB>();

            if (LunarHelper.SxwnlXmlData != null)
            {
                // XmlNodeList foundNodeList = LunarHelper.SxwnlXmlData.SelectNodes(xPath);
                XElement node = LunarHelper.GetXmlNode("obb_getDayName");
                if (node != null)
                {
                    foreach (XElement child in node.Elements())
                    {
                        result.Add(new OB());    // 添加日对象来记录节点信息
                        result[result.Count - 1].Lmc  = child.Attribute("Day").Value;
                        result[result.Count - 1].A    = child.Attribute("A").Value;
                        result[result.Count - 1].B    = child.Attribute("B").Value;
                        result[result.Count - 1].C    = child.Attribute("C").Value;
                        result[result.Count - 1].Fjia = LunarHelper.VAL(child.Attribute("Fjia").Value) == 0 ? 0 : 1;
                    }
                }
            }

            return(result);
        }
Beispiel #4
0
        /// <summary>
        /// 初始化数据
        /// </summary>
        private static int InitJWdata()
        {
            JWdata.DaylightInfo  = String.Empty;
            JWdata.SQDescription = String.Empty;

            //----------------------------------------------------------------------------------------
            // 加载 Xml 数据:  各地经纬度表, 时区表
            // 注: 加载时自动去除 Xml 各行数据前、后端的所有空白字符, 但对数据内部的空白字符不作处理
            //----------------------------------------------------------------------------------------
            if (LunarHelper.SxwnlXmlData != null)
            {
                const string JWvXPath = "SharpSxwnl/SxwnlData/Data[@Id = 'JWdata_JWv']";
                const string SQvXPath = "SharpSxwnl/SxwnlData/Data[@Id = 'JWdata_SQv']";

                XElement foundNode;
                Regex    regexToTrim = new Regex(@"(^\s*)|(\s*$)"); // C#: 匹配任何前后端的空白字符
                char[]   lineFlags   = new char[] { '\r', '\n' };


                // 读取并解开各地经纬度表
                foundNode = LunarHelper.GetXmlNode("JWdata_JWv");
                if (foundNode != null)
                {
                    string[] strJWv = regexToTrim.Replace(foundNode.Value, "").Split(lineFlags, StringSplitOptions.RemoveEmptyEntries);
                    for (int i = 0; i < strJWv.Length; i++)
                    {
                        JWdata.JWv.Add(new xList <string>());
                        JWdata.JWv[i].AddRange(regexToTrim.Replace(strJWv[i], "").Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries));  //解开清单
                    }
                }


                // 读取并解开各时区表
                foundNode = LunarHelper.GetXmlNode("JWdata_SQv");
                if (foundNode != null)
                {
                    string[] strSQv = regexToTrim.Replace(foundNode.Value, "").Split(lineFlags, StringSplitOptions.RemoveEmptyEntries);
                    for (int i = 0; i < strSQv.Length; i++)
                    {
                        JWdata.SQv.Add(new xList <string>());
                        JWdata.SQv[i].AddRange(regexToTrim.Replace(strSQv[i], "").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));  //解开各地时区清单
                    }
                }
            }

            return(1);
        }
Beispiel #5
0
        /// <summary>
        /// 从 Xml 对象中读取农历节日的定义
        /// </summary>
        /// <returns></returns>
        private static xList <string> getJieQiFeasts()
        {
            const string   xPath  = "SharpSxwnl/SxwnlData/Data[@Id = 'obb_JieqiFjia']";
            xList <string> result = new xList <string>();

            if (LunarHelper.SxwnlXmlData != null)
            {
                //XmlNode foundNode;
                Regex regexToTrim = new Regex(@"\s*");    // C#: 匹配任何空白字符, 用于去除所有空白字符

                // 读取并解开历史纪年表
                XElement foundNode = LunarHelper.GetXmlNode("obb_JieqiFjia");
                if (foundNode != null)
                {
                    string[] jieqiFeasts = regexToTrim.Replace(foundNode.Value, "").Split(',');
                    result.AddRange(jieqiFeasts);
                }
            }

            return(result);
        }
Beispiel #6
0
        /// <summary>
        /// 从 Xml 文档对象加载 sFtv 数据
        /// </summary>
        /// <returns></returns>
        private static xList <xList <string> > getsFtvData()
        {
            const int monthNumPerYear      = 12;
            xList <xList <string> > result = new xList <xList <string> >();

            for (int i = 0; i < monthNumPerYear; i++)    // C#: 预置 12 个元素
            {
                result.Add(new xList <string>());
            }

            //----------------------------------------------------------------------------------------
            // 加载 Xml 数据:  按周规则定义的节日(纪念日)
            // 注: 加载时自动去除各行 Xml 数据前、后端的所有空白字符, 但对数据内部的空白字符不作处理
            //----------------------------------------------------------------------------------------
            if (LunarHelper.SxwnlXmlData != null)
            {
                XElement foundNode;
                Regex    regexToTrim = new Regex(@"(^\s*)|(\s*$)"); // C#: 匹配前、后端的任何空白字符

                for (int i = 0; i < monthNumPerYear; i++)
                {
                    string xPath = "SharpSxwnl/SxwnlData/Data[@Id = 'oba_sFtv']/Month[@Id = '" + (i + 1).ToString() + "']";

                    foundNode = LunarHelper.GetXmlNode("oba_sFtv");
                    XElement month = foundNode?.Elements().FirstOrDefault(m => m.Attribute("Id").Value == (i + 1).ToString());
                    if (month != null)
                    {
                        string[] sftv = regexToTrim.Replace(month.Value, "").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                        for (int j = 0; j < sftv.Length; j++)
                        {
                            result[i].Add(regexToTrim.Replace(sftv[j], ""));
                        }
                    }
                }
            }

            return(result);
        }