Example #1
0
        /// <summary>
        /// Gets path of the xml element start tag that the specified
        /// <paramref name="index"/> is currently inside.
        /// </summary>
        /// <remarks>If the index outside the start tag then an empty path
        /// is returned.</remarks>
        public static XmlElementPath GetActiveElementStartPath(string xml, int index)
        {
            XmlElementPath path = new XmlElementPath();

            string elementText = GetActiveElementStartText(xml, index);

            if (elementText != null)
            {
                QualifiedName elementName      = GetElementName(elementText);
                NamespaceURI  elementNamespace = GetElementNamespace(elementText);

                path = GetParentElementPathCore(xml.Substring(0, index));
                string namespaceUri;
                if (elementNamespace.Namespace.Length == 0 &&
                    !string.IsNullOrEmpty(elementName.Prefix) &&
                    path.Namespaces != null &&
                    path.Namespaces.TryGetValue(elementName.Prefix, out namespaceUri))
                {
                    elementNamespace.Namespace = namespaceUri;
                    elementNamespace.Prefix    = elementName.Prefix;
                }
                path.Elements.Add(new QualifiedName(elementName.Name, elementNamespace.Namespace, elementNamespace.Prefix));
                path.Compact(elementNamespace.Namespace);
            }

            return(path);
        }
Example #2
0
        /// <summary>
        /// Gets the active element path given the element text.
        /// </summary>
        static XmlElementPath GetActiveElementStartPath(string xml, int index, string elementText)
        {
            QualifiedName elementName      = GetElementName(elementText);
            NamespaceURI  elementNamespace = GetElementNamespace(elementText);

            XmlElementPath path = GetParentElementPath(xml.Substring(0, index));

            if (elementNamespace.Namespace.Length == 0)
            {
                if (path.Elements.Count > 0)
                {
                    QualifiedName parentName = path.Elements[path.Elements.Count - 1];
                    elementNamespace.Namespace = parentName.Namespace;
                    elementNamespace.Prefix    = parentName.Prefix;
                }
            }
            path.Elements.Add(new QualifiedName(elementName.Name, elementNamespace.Namespace, elementNamespace.Prefix));
            path.Compact();
            return(path);
        }
Example #3
0
    /// <summary>
    /// Gets path of the xml element start tag that the specified
    /// <paramref name="index"/> is currently inside.
    /// </summary>
    /// <remarks>If the index outside the start tag then an empty path
    /// is returned.</remarks>
    public static XmlElementPath GetActiveElementStartPath(string xml, int index)
    {
      XmlElementPath path = new XmlElementPath();

      string elementText = GetActiveElementStartText(xml, index);

      if (elementText != null)
      {
        QualifiedName elementName = GetElementName(elementText);
        NamespaceURI elementNamespace = GetElementNamespace(elementText);

        path = GetParentElementPathCore(xml.Substring(0, index));
        string namespaceUri;
        if (elementNamespace.Namespace.Length == 0
          && !string.IsNullOrEmpty(elementName.Prefix)
          && path.Namespaces != null
          && path.Namespaces.TryGetValue(elementName.Prefix, out namespaceUri))
        {
          elementNamespace.Namespace = namespaceUri;
          elementNamespace.Prefix = elementName.Prefix;
        }
        path.Elements.Add(new QualifiedName(elementName.Name, elementNamespace.Namespace, elementNamespace.Prefix));
        path.Compact(elementNamespace.Namespace);
      }

      return path;
    }