// 获得一个数据库的一个浏览格式配置信息 // 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; }
// 获得一个数据库的全部浏览格式配置信息 // 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; }