예제 #1
0
        // 获得一个数据库的一个浏览格式配置信息
        // parameters:
        //      strDbName   "zh"语言的数据库名。也就是<browseformats>下<database>元素的name属性内的数据库名。
        //      strFormatName   界面上选定的格式名。注意,不一定是正好属于this.Lang语言的
        // return:
        //      0   没有配置
        //      1   成功
        public int GetBrowseFormat(string strDbName,
            string strFormatName,
            out BrowseFormat format,
            out string strError)
        {
            strError = "";
            format = null;

            // 先从全部<format>元素下面的全部<caption>中找
            XmlNode nodeDatabase = this.LibraryCfgDom.DocumentElement.SelectSingleNode(
                "browseformats/database[@name='" + strDbName + "']");

            if (nodeDatabase == null)
            {
                strError = "数据库名 '" + strDbName + "' 在<browseformats>元素下没有找到匹配的<database>元素";
                return -1;
            }

            XmlNode nodeFormat = null;

            XmlNodeList nodes = nodeDatabase.SelectNodes("format");
            for (int j = 0; j < nodes.Count; j++)
            {
                XmlNode node = nodes[j];

                List<string> captions = GetAllNames(node);
                if (captions.IndexOf(strFormatName) != -1)
                {
                    nodeFormat = node;
                    break;
                }
            }

            // 再从<format>元素的name属性中找
            if (nodeFormat == null)
            {
                nodeFormat = nodeDatabase.SelectSingleNode(
                    "format[@name='" + strFormatName + "']");
                if (nodeFormat == null)
                {
                    return 0;
                }
            }

            format = new BrowseFormat();
            format.Name = DomUtil.GetAttr(nodeFormat, "name");
            format.Type = DomUtil.GetAttr(nodeFormat, "type");
            format.ScriptFileName = DomUtil.GetAttr(nodeFormat, "scriptfile");

            return 1;
        }
예제 #2
0
        // 获得一个数据库的全部浏览格式配置信息
        // return:
        //      -1  出错
        //      0   没有配置。具体原因在strError中
        //      >=1 format个数
        public int GetBrowseFormats(string strDbName,
            out List<BrowseFormat> formats,
            out string strError)
        {
            strError = "";
            formats = null;

            XmlNode root = this.LibraryCfgDom.DocumentElement.SelectSingleNode("browseformats");
            if (root == null)
            {
                strError = "<browseformats>元素尚未配置...";
                return -1;
            }

            XmlNode node = root.SelectSingleNode("database[@name='" + strDbName + "']");
            if (node == null)
            {
                strError = "针对数据库 '" + strDbName + "' 没有在<browseformats>下配置<database>参数";
                return 0;
            }

            formats = new List<BrowseFormat>();

            XmlNodeList nodes = node.SelectNodes("format");
            for (int i = 0; i < nodes.Count; i++)
            {
                node = nodes[i];
                BrowseFormat format = new BrowseFormat();
                format.Name = DomUtil.GetAttr(node, "name");
                format.Type = DomUtil.GetAttr(node, "type");
                format.ScriptFileName = DomUtil.GetAttr(node, "scriptfile");
                formats.Add(format);
            }

            if (nodes.Count == 0)
            {
                strError = "数据库 '" + strDbName + "' 在<browseformats>下的<database>元素下,一个<format>元素也未配置。";
            }

            return nodes.Count;
        }