Пример #1
0
        /// <summary>
        /// This method checks if the attached
        /// </summary>
        /// <param name="element"></param>
        /// <param name="reader"></param>
        /// <returns></returns>
        private static bool CheckIfNameSpaceDAVSpace(String element, XmlTextReader reader)
        {
            // split the element into tag and field
            String[] fields = element.Split(':');

            // could be that the element has no namespace attached, so it is not part
            // of the webdav response
            if (fields.Length == 1)
            {
                return(false);
            }

            // get the namespace list
            IDictionary <String, String> nameSpaceList = reader.GetNamespacesInScope(XmlNamespaceScope.All);

            // get the namespace of our node
            if (!nameSpaceList.ContainsKey(fields[0]))
            {
                return(false);
            }

            // get the value
            String NsValue = nameSpaceList[fields[0]];

            // compare if it's a DAV namespce
            if (NsValue.ToLower().Equals("dav:"))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #2
0
        ArrayList CtrlSpaceForElement(string fileContent)
        {
            using (XmlTextReader r = new XmlTextReader(new StringReader(fileContent))) {
                try {
                    r.WhitespaceHandling = WhitespaceHandling.Significant;
                    // move reader to correct position
                    while (r.Read() && !IsReaderAtTarget(r))
                    {
                    }
                }
                catch (XmlException) {
                }
                ArrayList       result = new ArrayList();
                IProjectContent pc     = parseInfo.BestCompilationUnit.ProjectContent;

                resolveExpression = r.Name;
                TypeResolveResult rr = ResolveElementName(r) as TypeResolveResult;
                if (rr != null)
                {
                    AddPropertiesForType(result, r, rr);
                }

                foreach (var ns in r.GetNamespacesInScope(XmlNamespaceScope.ExcludeXml))
                {
                    ArrayList list = XamlCompilationUnit.GetNamespaceMembers(pc, ns.Value);
                    if (list != null)
                    {
                        foreach (IClass c in list.OfType <IClass>())
                        {
                            if (c.ClassType != ClassType.Class)
                            {
                                continue;
                            }
                            if (c.IsAbstract && c.IsStatic)
                            {
                                continue;
                            }
                            if (c.ClassInheritanceTree.Any(b => b.FullyQualifiedName == "System.Attribute"))
                            {
                                continue;
                            }
                            if (!c.Methods.Any(m => m.IsConstructor && m.IsPublic))
                            {
                                continue;
                            }
                            if (string.IsNullOrEmpty(ns.Key))
                            {
                                result.Add(c);
                            }
                            else
                            {
                                result.Add(new XamlCompletionClass(c, ns.Key));
                            }
                        }
                    }
                }
                return(result);
            }
        }
        /// <summary>
        /// Gets the parent element path based on the index position. This
        /// method does not compact the path so it will include all elements
        /// including those in another namespace in the path.
        /// </summary>
        static XmlElementPath GetFullParentElementPath(string xml)
        {
            XmlElementPath path = new XmlElementPath();
            IDictionary <string, string> namespacesInScope = null;

            using (StringReader reader = new StringReader(xml))
            {
                using (XmlTextReader xmlReader = new XmlTextReader(reader))
                {
                    try
                    {
                        xmlReader.XmlResolver = null; // prevent XmlTextReader from loading external DTDs
                        while (xmlReader.Read())
                        {
                            switch (xmlReader.NodeType)
                            {
                            case XmlNodeType.Element:
                                if (!xmlReader.IsEmptyElement)
                                {
                                    QualifiedName elementName = new QualifiedName(xmlReader.LocalName, xmlReader.NamespaceURI, xmlReader.Prefix);
                                    if (xmlReader.HasAttributes)
                                    {
                                        while (xmlReader.MoveToNextAttribute())
                                        {
                                            elementName.attributes.Add(xmlReader.Name, xmlReader.Value);
                                        }
                                        // Move the reader back to the element node.
                                        //xmlReader.MoveToElement();
                                    }
                                    path.AddElement(elementName);
                                }
                                break;

                            case XmlNodeType.EndElement:
                                path.Elements.RemoveLast();
                                break;
                            }
                        }
                    }
                    catch (XmlException e)
                    {
                        namespacesInScope = xmlReader.GetNamespacesInScope(XmlNamespaceScope.All);
                    }
                }
            }

            // Add namespaces in scope for the last element read.
            if (namespacesInScope != null)
            {
                foreach (KeyValuePair <string, string> ns in namespacesInScope)
                {
                    path.NamespacesInScope.Add(new XmlNamespace(ns.Key, ns.Value));
                }
            }

            return(path);
        }
Пример #4
0
        /// <summary>
        /// Source: SharpDevelop
        /// </summary>
        /// <param name="xml"></param>
        /// <returns></returns>
        public static XmlElementInformation GetParentElementPath(string xml)
        {
            XmlElementInformation        path = new XmlElementInformation();
            IDictionary <string, string> namespacesInScope = null;

            using (StringReader reader = new StringReader(xml))
            {
                using (XmlTextReader xmlReader = new XmlTextReader(reader))
                {
                    try
                    {
                        xmlReader.XmlResolver = null; // prevent XmlTextReader from loading external DTDs
                        while (xmlReader.Read())
                        {
                            switch (xmlReader.NodeType)
                            {
                            case XmlNodeType.Element:
                                if (!xmlReader.IsEmptyElement)
                                {
                                    XmlElementQualifiedName elementName = new XmlElementQualifiedName(xmlReader.LocalName, xmlReader.NamespaceURI, xmlReader.Prefix);
                                    path.AddElement(elementName);
                                }
                                break;

                            case XmlNodeType.EndElement:
                                path.Elements.RemoveLast();
                                break;
                            }
                        }
                    }
                    catch (XmlException)
                    {
                        namespacesInScope = xmlReader.GetNamespacesInScope(XmlNamespaceScope.All);
                    }
                }
            }

            // Add namespaces in scope for the last element read.
            if (namespacesInScope != null)
            {
                foreach (KeyValuePair <string, string> ns in namespacesInScope)
                {
                    path.NamespacesInScope.Add(new XmlNamespace(ns.Key, ns.Value));
                }
            }

            return(path);
        }
Пример #5
0
        private PrefixedNamespace[] CreateDefaultNamespaceManager(XmlTextReader reader)
        {
            PrefixedNamespace[]      result;
            List <PrefixedNamespace> tmpResult        = new List <PrefixedNamespace>();
            XmlNamespaceManager      nameSpaceManager = new XmlNamespaceManager(new NameTable());

            while (!reader.EOF && reader.MoveToContent() != XmlNodeType.Element)
            {
                ;
            }

            if (reader.EOF)
            {
                // nothing to do
            }
            else
            {
                // Get all namespaces in the document
                IDictionary <string, string> ns = reader.GetNamespacesInScope(XmlNamespaceScope.All);

                IEnumerator <KeyValuePair <string, string> > enumera = ns.GetEnumerator();
                while (enumera.MoveNext())
                {
                    string name  = enumera.Current.Key;
                    string value = enumera.Current.Value;

                    //nameSpaceManager.AddNamespace(name, value);
                    tmpResult.Add(new PrefixedNamespace(value, name));

                    if (name.CompareTo(String.Empty) == 0)
                    {
                        //Required by XPath 1.0, as it does not know about default namespaces.
                        //This means nodes with no prefix are referenced 'root:[nodename]', not '[nodename]'
                        //nameSpaceManager.AddNamespace("root", value);
                        tmpResult.Add(new PrefixedNamespace(value, "root"));
                    }
                }
            }

            result = tmpResult.ToArray();

            return(result);
        }
Пример #6
0
        public static IDictionary <string, string> GetNamespacesInScope(string xml)
        {
            try
            {
                var xmlReader = new XmlTextReader(new StringReader(xml));
                xmlReader.XmlResolver = null;
                while (xmlReader.Read())
                {
                    switch (xmlReader.NodeType)
                    {
                    case XmlNodeType.Element:
                        return(xmlReader.GetNamespacesInScope(XmlNamespaceScope.All));
                    }
                }
            }
            catch (XmlException) { /* Do nothing. */ }
            catch (WebException) { /* Do nothing. */ }

            return(null);
        }
Пример #7
0
        public static XmlElementPath GetParentElementPathCore(string xml, out IDictionary <string, string> namespaces)
        {
            XmlElementPath path = new XmlElementPath();

            namespaces = null;

            try
            {
                StringReader  reader    = new StringReader(xml);
                XmlTextReader xmlReader = new XmlTextReader(reader);
                xmlReader.XmlResolver = null;
                while (xmlReader.Read())
                {
                    switch (xmlReader.NodeType)
                    {
                    case XmlNodeType.Element:
                        if (!xmlReader.IsEmptyElement)
                        {
                            QualifiedName elementName = new QualifiedName(xmlReader.LocalName, xmlReader.NamespaceURI, xmlReader.Prefix);
                            path.Elements.Add(elementName);
                            namespaces = xmlReader.GetNamespacesInScope(XmlNamespaceScope.All);
                        }
                        break;

                    case XmlNodeType.EndElement:
                        path.Elements.RemoveLast();
                        break;
                    }
                }
            }
            catch (XmlException)
            {
                // Do nothing.
            }
            catch (WebException)
            {
                // Do nothing.
            }

            return(path);
        }