예제 #1
0
        static FaultCode ReadFaultCode12(XmlDictionaryReader r, string ns)
        {
            FaultCode        subcode = null;
            XmlQualifiedName value   = XmlQualifiedName.Empty;

            if (r.IsEmptyElement)
            {
                throw new ArgumentException("either SubCode or Value element is mandatory in SOAP fault code.");
            }

            r.ReadStartElement();              // could be either Code or SubCode
            r.MoveToContent();
            while (r.NodeType != XmlNodeType.EndElement)
            {
                switch (r.LocalName)
                {
                case "Subcode":
                    subcode = ReadFaultCode12(r, ns);
                    break;

                case "Value":
                    value = (XmlQualifiedName)r.ReadElementContentAs(typeof(XmlQualifiedName), r as IXmlNamespaceResolver, "Value", ns);
                    break;

                default:
                    throw new ArgumentException(String.Format("Unexpected Fault Code subelement: '{0}'", r.LocalName));
                }
                r.MoveToContent();
            }
            r.ReadEndElement();

            return(new FaultCode(value.Name, value.Namespace, subcode));
        }