| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- //
- // System.Xml.Serialization.XmlSchemas
- //
- // Author:
- // Tim Coleman ([email protected])
- //
- // Copyright (C) Tim Coleman, 2002
- //
- using System.Collections;
- using System.Xml.Schema;
- namespace System.Xml.Serialization {
- public class XmlSchemas : CollectionBase {
- #region Fields
- Hashtable table = new Hashtable ();
- #endregion
- #region Constructors
- public XmlSchemas ()
- {
- }
- #endregion // Constructors
- #region Properties
- public XmlSchema this [int index] {
- get {
- if (index < 0 || index > Count)
- throw new ArgumentOutOfRangeException ();
- return (XmlSchema) List [index];
- }
- set { List [index] = value; }
- }
- public XmlSchema this [string ns] {
- get { return (XmlSchema) table[ns]; }
- }
- #endregion // Properties
- #region Methods
- public int Add (XmlSchema schema)
- {
- Insert (Count, schema);
- return (Count - 1);
- }
- public void Add (XmlSchemas schemas)
- {
- foreach (XmlSchema schema in schemas)
- Add (schema);
- }
- public bool Contains (XmlSchema schema)
- {
- return List.Contains (schema);
- }
- public void CopyTo (XmlSchema[] array, int index)
- {
- List.CopyTo (array, index);
- }
- public object Find (XmlQualifiedName name, Type type)
- {
- XmlSchema schema = table [name.Namespace] as XmlSchema;
- if (schema == null)
- return null;
- if (!schema.IsCompiled) {
- try {
- schema.Compile (null);
- } catch {
- throw new InvalidOperationException ("Error compiling XmlSchema " +
- name.Namespace);
- }
- }
- XmlSchemaObjectTable tbl = null;
- if (type == typeof (XmlSchemaSimpleType) || type == typeof (XmlSchemaComplexType))
- tbl = schema.SchemaTypes;
- else if (type == typeof (XmlSchemaAttribute))
- tbl = schema.Attributes;
- else if (type == typeof (XmlSchemaAttributeGroup))
- tbl = schema.AttributeGroups;
- else if (type == typeof (XmlSchemaElement))
- tbl = schema.Elements;
- else if (type == typeof (XmlSchemaGroup))
- tbl = schema.Groups;
- else if (type == typeof (XmlSchemaNotation))
- tbl = schema.Notations;
- return (tbl != null) ? tbl [name] : null;
- }
- public int IndexOf (XmlSchema schema)
- {
- return List.IndexOf (schema);
- }
- public void Insert (int index, XmlSchema schema)
- {
- List.Insert (index, schema);
- }
- [MonoTODO]
- public static bool IsDataSet (XmlSchema schema)
- {
- throw new NotImplementedException ();
- }
- protected override void OnClear ()
- {
- table.Clear ();
- }
- protected override void OnInsert (int index, object value)
- {
- table [((XmlSchema) value).TargetNamespace] = value;
- }
- protected override void OnRemove (int index, object value)
- {
- table.Remove (value);
- }
- protected override void OnSet (int index, object oldValue, object newValue)
- {
- table [((XmlSchema) oldValue).TargetNamespace] = newValue;
- }
-
- public void Remove (XmlSchema schema)
- {
- List.Remove (schema);
- }
- #endregion // Methods
- }
- }
|