The Labs \ Source Viewer \ SSCLI \ System.Xml.Serialization \ XmlSerializerNamespaces

  1. //------------------------------------------------------------------------------
  2. // <copyright file="XmlSerializerNamespaces.cs" company="Microsoft">
  3. //
  4. // Copyright (c) 2006 Microsoft Corporation. All rights reserved.
  5. //
  6. // The use and distribution terms for this software are contained in the file
  7. // named license.txt, which can be found in the root of this distribution.
  8. // By using this software in any fashion, you are agreeing to be bound by the
  9. // terms of this license.
  10. //
  11. // You must not remove this notice, or any other, from this software.
  12. //
  13. // </copyright>
  14. // <owner current="true" primary="true">ElenaK</owner>
  15. //------------------------------------------------------------------------------
  16. namespace System.Xml.Serialization
  17. {
  18.    
  19.     using System.Reflection;
  20.     using System.Collections;
  21.     using System.IO;
  22.     using System.Xml.Schema;
  23.     using System;
  24.    
  25.     /// <include file='doc\XmlSerializerNamespaces.uex' path='docs/doc[@for="XmlSerializerNamespaces"]/*' />
  26.     /// <devdoc>
  27.     /// <para>[To be supplied.]</para>
  28.     /// </devdoc>
  29.     public class XmlSerializerNamespaces
  30.     {
  31.         Hashtable namespaces = null;
  32.        
  33.         /// <include file='doc\XmlSerializerNamespaces.uex' path='docs/doc[@for="XmlSerializerNamespaces.XmlSerializerNamespaces"]/*' />
  34.         /// <devdoc>
  35.         /// <para>[To be supplied.]</para>
  36.         /// </devdoc>
  37.         public XmlSerializerNamespaces()
  38.         {
  39.         }
  40.        
  41.        
  42.         /// <include file='doc\XmlSerializerNamespaces.uex' path='docs/doc[@for="XmlSerializerNamespaces.XmlSerializerNamespaces1"]/*' />
  43.         /// <internalonly/>
  44.         /// <devdoc>
  45.         /// <para>[To be supplied.]</para>
  46.         /// </devdoc>
  47.         public XmlSerializerNamespaces(XmlSerializerNamespaces namespaces)
  48.         {
  49.             this.namespaces = (Hashtable)namespaces.Namespaces.Clone();
  50.         }
  51.        
  52.         /// <include file='doc\XmlSerializerNamespaces.uex' path='docs/doc[@for="XmlSerializerNamespaces.XmlSerializerNamespaces2"]/*' />
  53.         /// <devdoc>
  54.         /// <para>[To be supplied.]</para>
  55.         /// </devdoc>
  56.         public XmlSerializerNamespaces(XmlQualifiedName[] namespaces)
  57.         {
  58.             for (int i = 0; i < namespaces.Length; i++) {
  59.                 XmlQualifiedName qname = namespaces[i];
  60.                 Add(qname.Name, qname.Namespace);
  61.             }
  62.         }
  63.        
  64.         /// <include file='doc\XmlSerializerNamespaces.uex' path='docs/doc[@for="XmlSerializerNamespaces.Add"]/*' />
  65.         /// <devdoc>
  66.         /// <para>[To be supplied.]</para>
  67.         /// </devdoc>
  68.         public void Add(string prefix, string ns)
  69.         {
  70.             // parameter value check
  71.             if (prefix != null && prefix.Length > 0)
  72.                 XmlConvert.VerifyNCName(prefix);
  73.            
  74.             if (ns != null && ns.Length > 0)
  75.                 XmlConvert.ToUri(ns);
  76.             AddInternal(prefix, ns);
  77.         }
  78.        
  79.         internal void AddInternal(string prefix, string ns)
  80.         {
  81.             Namespaces[prefix] = ns;
  82.         }
  83.        
  84.         /// <include file='doc\XmlSerializerNamespaces.uex' path='docs/doc[@for="XmlSerializerNamespaces.ToArray"]/*' />
  85.         /// <devdoc>
  86.         /// <para>[To be supplied.]</para>
  87.         /// </devdoc>
  88.         public XmlQualifiedName[] ToArray()
  89.         {
  90.             if (NamespaceList == null)
  91.                 return new XmlQualifiedName[0];
  92.             return (XmlQualifiedName[])NamespaceList.ToArray(typeof(XmlQualifiedName));
  93.         }
  94.        
  95.         /// <include file='doc\XmlSerializerNamespaces.uex' path='docs/doc[@for="XmlSerializerNamespaces.Count"]/*' />
  96.         /// <devdoc>
  97.         /// <para>[To be supplied.]</para>
  98.         /// </devdoc>
  99.         public int Count {
  100.             get { return Namespaces.Count; }
  101.         }
  102.        
  103.         internal ArrayList NamespaceList {
  104.             get {
  105.                 if (namespaces == null || namespaces.Count == 0)
  106.                     return null;
  107.                 ArrayList namespaceList = new ArrayList();
  108.                 foreach (string key in Namespaces.Keys) {
  109.                     namespaceList.Add(new XmlQualifiedName(key, (string)Namespaces[key]));
  110.                 }
  111.                 return namespaceList;
  112.             }
  113.         }
  114.        
  115.         internal Hashtable Namespaces {
  116.             get {
  117.                 if (namespaces == null)
  118.                     namespaces = new Hashtable();
  119.                 return namespaces;
  120.             }
  121.             set { namespaces = value; }
  122.         }
  123.     }
  124. }

Developer Fusion