static void ReadPolicyElement (XmlReader reader, ClientAccessPolicy cap)
{
if (reader.HasAttributes || reader.IsEmptyElement) {
reader.Skip ();
return;
}
var policy = new AccessPolicy ();
bool valid = true;
reader.ReadStartElement ("policy", String.Empty);
for (reader.MoveToContent (); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent ()) {
if (reader.NodeType != XmlNodeType.Element)
throw new XmlException (String.Format ("Unexpected policy content: {0}", reader.NodeType));
switch (reader.LocalName) {
case "allow-from":
ReadAllowFromElement (reader, policy);
break;
case "grant-to":
ReadGrantToElement (reader, policy);
break;
default:
valid = false;
reader.Skip ();
break;
}
}
if (valid)
cap.AccessPolicyList.Add (policy);
reader.ReadEndElement ();
}