1 //------------------------------------------------------------------------------
2 // <copyright file="XmlSerializerNamespaces.cs" company="Microsoft">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
5 // <owner current="true" primary="true">[....]</owner>
6 //------------------------------------------------------------------------------
8 namespace System.Xml.Serialization {
10 using System.Reflection;
11 using System.Collections;
13 using System.Xml.Schema;
16 /// <include file='doc\XmlSerializerNamespaces.uex' path='docs/doc[@for="XmlSerializerNamespaces"]/*' />
18 /// <para>[To be supplied.]</para>
20 public class XmlSerializerNamespaces {
21 Hashtable namespaces = null;
23 /// <include file='doc\XmlSerializerNamespaces.uex' path='docs/doc[@for="XmlSerializerNamespaces.XmlSerializerNamespaces"]/*' />
25 /// <para>[To be supplied.]</para>
27 public XmlSerializerNamespaces() {
31 /// <include file='doc\XmlSerializerNamespaces.uex' path='docs/doc[@for="XmlSerializerNamespaces.XmlSerializerNamespaces1"]/*' />
34 /// <para>[To be supplied.]</para>
36 public XmlSerializerNamespaces(XmlSerializerNamespaces namespaces) {
37 this.namespaces = (Hashtable)namespaces.Namespaces.Clone();
40 /// <include file='doc\XmlSerializerNamespaces.uex' path='docs/doc[@for="XmlSerializerNamespaces.XmlSerializerNamespaces2"]/*' />
42 /// <para>[To be supplied.]</para>
44 public XmlSerializerNamespaces(XmlQualifiedName[] namespaces) {
45 for (int i = 0; i < namespaces.Length; i++) {
46 XmlQualifiedName qname = namespaces[i];
47 Add(qname.Name, qname.Namespace);
51 /// <include file='doc\XmlSerializerNamespaces.uex' path='docs/doc[@for="XmlSerializerNamespaces.Add"]/*' />
53 /// <para>[To be supplied.]</para>
55 public void Add(string prefix, string ns) {
56 // parameter value check
57 if (prefix != null && prefix.Length > 0)
58 XmlConvert.VerifyNCName(prefix);
60 if (ns != null && ns.Length > 0)
62 AddInternal(prefix, ns);
65 internal void AddInternal(string prefix, string ns) {
66 Namespaces[prefix] = ns;
69 /// <include file='doc\XmlSerializerNamespaces.uex' path='docs/doc[@for="XmlSerializerNamespaces.ToArray"]/*' />
71 /// <para>[To be supplied.]</para>
73 public XmlQualifiedName[] ToArray() {
74 if (NamespaceList == null)
75 return new XmlQualifiedName[0];
76 return (XmlQualifiedName[])NamespaceList.ToArray(typeof(XmlQualifiedName));
79 /// <include file='doc\XmlSerializerNamespaces.uex' path='docs/doc[@for="XmlSerializerNamespaces.Count"]/*' />
81 /// <para>[To be supplied.]</para>
84 get { return Namespaces.Count; }
87 internal ArrayList NamespaceList {
89 if (namespaces == null || namespaces.Count == 0)
91 ArrayList namespaceList = new ArrayList();
92 foreach(string key in Namespaces.Keys) {
93 namespaceList.Add(new XmlQualifiedName(key, (string)Namespaces[key]));
99 internal Hashtable Namespaces {
101 if (namespaces == null)
102 namespaces = new Hashtable();
105 set { namespaces = value; }
108 internal string LookupPrefix(string ns) {
109 if (string.IsNullOrEmpty(ns))
111 if (namespaces == null || namespaces.Count == 0)
114 foreach(string prefix in namespaces.Keys) {
115 if (!string.IsNullOrEmpty(prefix) && (string)namespaces[prefix] == ns) {