/// <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; } }
/// <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); }
/// <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); }
/// <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; } } }
/// <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); }
/// <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); }
/// <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); }