Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="document"></param>
        /// <param name="idValue"></param>
        /// <returns></returns>
        public override XmlElement GetIdElement(XmlDocument document, string idValue)
        {
            XmlNamespaceManager nsmgr   = new XmlNamespaceManager(document.NameTable);
            XmlElement          element = null;

            if (string.IsNullOrEmpty(idValue) == false)
            {
                string prefix = SoapDSigUtil.FindPrefix(document.DocumentElement, this.NamespaceForReference);

                if (string.IsNullOrEmpty(prefix))
                {
                    prefix = "wsu";
                }

                nsmgr.AddNamespace(prefix, this.NamespaceForReference);

                string findString = string.Format("//*[(@Id='{0}' and namespace-uri()='{1}') or (@{2}:Id='{0}')]", idValue, this.NamespaceForReference, prefix);
                element = document.SelectSingleNode(findString, nsmgr) as XmlElement;
            }
            else if (document.DocumentElement != null)
            {
                element = document.DocumentElement;
            }

            return(element);
        }
Пример #2
0
        /// <summary>
        /// Метод нахождения префикса
        /// </summary>
        /// <param name="element"></param>
        /// <param name="isTypeBasic"></param>
        /// <returns></returns>
        private string FindPrefix(XmlElement element, bool isTypeBasic)
        {
            try
            {
                log.LogDebug("Пытаемся получить значение префикса.");

                string prefix = SoapDSigUtil.FindPrefix(element, NamespaceUri.Smev3Types);
                if (!isTypeBasic)
                {
                    prefix = (string.Compare(prefix, "xmlns", StringComparison.InvariantCultureIgnoreCase) == 0) ? string.Empty : prefix;
                }
                else
                {
                    prefix = (string.IsNullOrEmpty(prefix) || string.Compare(prefix, "xmlns", true) == 0) ? "typesBasic" : prefix;
                }

                log.LogDebug($"Значение префикса успешно получено: {prefix}.");

                return(prefix);
            }
            catch (Exception ex)
            {
                throw new Exception($"Ошибка при попытке получить значение префикса. {ex.Message}.");
            }
        }