コード例 #1
0
ファイル: XmlParser.cs プロジェクト: 4-R-Forum/InnovatorAdmin
        /// <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);

                IDictionary <string, string> namespaces;
                path = GetParentElementPathCore(xml.Substring(0, index), out namespaces);
                string namespaceUri;
                if (elementNamespace.Namespace.Length == 0 &&
                    !string.IsNullOrEmpty(elementName.Prefix) &&
                    namespaces != null &&
                    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);
        }
コード例 #2
0
ファイル: XmlParser.cs プロジェクト: 4-R-Forum/InnovatorAdmin
        /// <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);
        }