Esempio n. 1
0
 /// <summary>
 /// Creates a new TargetItem instance using the specified XmlReader instance provided, and the node names of
 /// the "target item list" nodes which are provided by the derived class during construction.
 /// </summary>
 /// <param name="reader">The XmlReader instance positioned at the "target item list" node.</param>
 /// <param name="itemsNodeName">The name of the "target item list" node.</param>
 /// <param name="anyItemNodeName">The name of the AnyXxxx node for this "target item list" node.</param>
 /// <param name="itemNodeName">The name of the "target item" node that can be defined within this "target
 /// item list" node.</param>
 /// <param name="schemaVersion">The version of the schema that was used to validate.</param>
 protected TargetItemsBaseReadWrite(XmlReader reader, string itemsNodeName, string anyItemNodeName, string itemNodeName, XacmlVersion schemaVersion)
     : this( schemaVersion )
 {
     if (reader == null)
     {
         throw new ArgumentNullException("reader");
     }
     if (reader.LocalName == itemsNodeName && ValidateSchema(reader, schemaVersion))
     {
         while (reader.Read())
         {
             if (reader.LocalName == anyItemNodeName && ValidateSchema(reader, schemaVersion))
             {
                 _anyItem = true;
             }
             else if (reader.LocalName == itemNodeName && ValidateSchema(reader, schemaVersion))
             {
                 _items.Add((TargetItemBaseReadWrite)CreateTargetItem(reader));
             }
             else if (reader.LocalName == itemsNodeName &&
                      reader.NodeType == XmlNodeType.EndElement)
             {
                 break;
             }
         }
     }
     else
     {
         throw new Exception(Resource.ResourceManager[Resource.MessageKey.exc_invalid_node_name, reader.LocalName]);
     }
 }