Exemple #1
0
        /// <summary>
        /// 增加命名空间
        /// </summary>
        /// <param name="prefix">前缀,如果是默认命名空间,则使用空字符串</param>
        /// <param name="uri">命名空间uri</param>
        /// <param name="mapping">映射至新的命名空间前缀</param>
        /// <param name="schema">XSD架构缓存对象</param>
        public void Add(string prefix, string uri, string mapping, XmlSchema schema)
        {
            if (string.IsNullOrEmpty(prefix))
            {
                prefix = _default_namespace_prefix;
            }

            if (this.Items.Any(p => string.Equals(p.Prefix, prefix, StringComparison.OrdinalIgnoreCase)))
            {
                throw new InvalidOperationException($"The namespace named '{prefix}' already exists.");
            }

            if (string.IsNullOrWhiteSpace(uri))
            {
                throw new InvalidOperationException("The URI of the namespace cannot be empty.");
            }

            if (this.Items.Any(p => string.Equals(p.Uri, uri, StringComparison.OrdinalIgnoreCase)))
            {
                throw new InvalidOperationException($"The namespace URI '{uri}' already exists.");
            }

            B5F1C47E3281 item = new B5F1C47E3281(prefix, uri, mapping, schema);

            this.Items.Add(item);

            if (prefix == _default_namespace_prefix)
            {
                this.HasDefaultNamespace = true;
            }
        }
Exemple #2
0
        /// <summary>
        /// 根据命名空间前缀获取命名空间映射
        /// </summary>
        /// <param name="prefix">命名空间前缀</param>
        /// <returns>命名空间映射</returns>
        public string GetMappingByPrefix(string prefix)
        {
            B5F1C47E3281 ns = this.Items.FirstOrDefault(p => string.Equals(p.Prefix, prefix, StringComparison.OrdinalIgnoreCase));

            if (ns == null)
            {
                throw new InvalidOperationException($"The namespace prefix '{prefix}' not exists.");
            }

            return(ns.Mapping);
        }
Exemple #3
0
        /// <summary>
        /// 根据命名空间Uri获取命名空间前缀
        /// </summary>
        /// <param name="uri">命名空间Uri</param>
        /// <returns>命名空间前缀</returns>
        public string GetPrefixByUri(string uri)
        {
            B5F1C47E3281 ns = this.Items.FirstOrDefault(p => string.Equals(p.Uri, uri, StringComparison.OrdinalIgnoreCase));

            if (ns == null)
            {
                throw new InvalidOperationException($"The namespace URI '{uri}' not exists.");
            }

            return(ns.Prefix);
        }
Exemple #4
0
        /// <summary>
        /// 移除命名空间
        /// </summary>
        /// <param name="prefix">前缀,如果是默认命名空间,则使用空字符串</param>
        public void Remove(string prefix)
        {
            B5F1C47E3281 item = this.Items.FirstOrDefault(p => string.Equals(p.Prefix, prefix, StringComparison.OrdinalIgnoreCase));

            if (item != null)
            {
                this.Items.Remove(item);

                if (item.Prefix == _default_namespace_prefix)
                {
                    this.HasDefaultNamespace = false;
                }
            }
        }
Exemple #5
0
        /// <summary>
        /// 根据命名空间前缀和节点名称获取节点类型,如果不存在则返回 null
        /// </summary>
        /// <param name="prefix">命名空间前缀</param>
        /// <param name="name">节点名称</param>
        /// <returns>节点类型</returns>
        public XmlSchemaElement TryGetElementByPrefix(string prefix, string name)
        {
            XmlSchemaElement element = null;
            B5F1C47E3281     ns      = this.Items.FirstOrDefault(p => string.Equals(p.Prefix, prefix, StringComparison.OrdinalIgnoreCase));

            if (ns != null)
            {
                if (ns.Schema != null)
                {
                    if (ns.Elements.TryGetValue(name, out element))
                    {
                        return(element);
                    }
                }
            }
            return(null);
        }
Exemple #6
0
        /// <summary>
        /// 根据命名空间前缀获取命名空间映射,如果不存在则返回 null
        /// </summary>
        /// <param name="prefix">命名空间前缀</param>
        /// <returns>命名空间映射</returns>
        public string TryGetMappingByPrefix(string prefix)
        {
            B5F1C47E3281 ns = this.Items.FirstOrDefault(p => string.Equals(p.Prefix, prefix, StringComparison.OrdinalIgnoreCase));

            return(ns == null ? null : ns.Mapping);
        }
Exemple #7
0
        /// <summary>
        /// 根据命名空间Uri获取命名空间前缀,如果不存在则返回 null
        /// </summary>
        /// <param name="uri">命名空间Uri</param>
        /// <returns>命名空间前缀</returns>
        public string TryGetPrefixByUri(string uri)
        {
            B5F1C47E3281 ns = this.Items.FirstOrDefault(p => string.Equals(p.Uri, uri, StringComparison.OrdinalIgnoreCase));

            return(ns == null ? null : ns.Prefix);
        }