Beispiel #1
0
        public static XPathContainer GetXPath(string XmlSelector)
        {
            var xpathcontainer = new XPathContainer();

            xpathcontainer.IsComplex = XmlSelector.IndexOf("<") > -1;
            xpathcontainer.TagName   = Utilities.Strings.TextBetween(XmlSelector, "<", ">");
            var xpath = xpathcontainer.IsComplex ? xpathcontainer.TagName : XmlSelector;
            var ix    = xpath.IndexOf(":", StringComparison.Ordinal);

            if (ix > -1)
            {
                var ns = xpath;
                ns = ns.Remove(ix);
                if (ns.StartsWith("//", StringComparison.Ordinal))
                {
                    ns = ns.Substring(2);
                }
                var name = xpath.Substring(ix + 1);
                xpathcontainer.Namespaces.Add(ns);

                if (ns == "*")
                {
                    //XPath = "//*[local-name() = translate('" + name + "','abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')";
                    //XPath = "*[translate(local-name(),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')='" + name.ToUpper() + "']";
                    //XPath = "*[matches(local-name(),'" + name + "',i)]";
                    xpath = "*[local-name()='" + name + "']";
                }
            }
            xpathcontainer.XPath = xpath;
            return(xpathcontainer);
        }
Beispiel #2
0
        public static XmlNode SelectSingleNode(XmlNode node, XPathContainer XPathContainer)
        {
            XmlNamespaceManager manager = Utilities.Xml.GetTaxonomyNamespaceManager(node.OwnerDocument);

            if (!XPathContainer.HasNamespace(manager))
            {
                return(null);
            }

            return(node.OwnerDocument.SelectSingleNode(XPathContainer.XPath, manager));
        }
Beispiel #3
0
        public static List <XmlNode> SelectChildNodes(XmlNode node, XPathContainer XPathContainer)
        {
            var result = new List <XmlNode>();
            XmlNamespaceManager manager = Utilities.Xml.GetTaxonomyNamespaceManager(node.OwnerDocument);

            //var ix = XPath.IndexOf(":", StringComparison.Ordinal);
            //if (ix>-1)
            //{
            //    var ns = XPath;
            //    if (XPath.StartsWith("//", StringComparison.Ordinal))
            //    {
            //        ns = XPath.Substring(2);
            //    }
            //    ns = ns.Remove(ix);
            //    var name = XPath.Substring(ix + 1);
            //    if (ns == "*")
            //    {
            //        //XPath = "//*[local-name() = translate('" + name + "','abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')";
            //        //XPath = "*[translate(local-name(),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')='" + name.ToUpper() + "']";
            //        //XPath = "*[matches(local-name(),'" + name + "',i)]";
            //        XPath = "*[local-name()='" + name + "']";
            //    }
            //    if (!manager.HasNamespace(ns) && ns!="*")
            //    {
            //        return result;
            //        //return node.OwnerDocument.SelectNodes("xffgh");
            //    }
            //}
            //if (XPath.Contains("*"))
            //{

            //}
            if (!XPathContainer.HasNamespace(manager))
            {
                return(result);
            }
            var nodes = node.SelectNodes(XPathContainer.XPath, manager); //.SelectNodes(XPath, manager);

            foreach (XmlNode xnode in nodes)
            {
                if (xnode.ParentNode == node)
                {
                    result.Add(xnode);
                }
            }
            return(result);
        }
Beispiel #4
0
        public static List <XmlNode> SelectNodes(XmlNode node, XPathContainer xpathcontainer)
        {
            var result = new List <XmlNode>();
            XmlNamespaceManager manager = Utilities.Xml.GetTaxonomyNamespaceManager(node.OwnerDocument);

            foreach (var ns in xpathcontainer.Namespaces)
            {
                if (!manager.HasNamespace(ns))
                {
                    return(result);
                }
            }
            //if (XPath.Contains(":"))
            //{
            //    var ns = XPath;
            //    if (XPath.StartsWith("//"))
            //    {
            //        ns = XPath.Substring(2);
            //    }
            //    ns = ns.Remove(ns.IndexOf(":"));
            //    if (!manager.HasNamespace(ns) )
            //    {
            //        return result;
            //        //return node.OwnerDocument.SelectNodes("xffgh");
            //    }
            //}
            //try
            //{
            var nodes = node.SelectNodes(xpathcontainer.XPath, manager);

            foreach (XmlNode xnode in nodes)
            {
                result.Add(xnode);
            }
            //}
            //catch (Exception ex)
            //{

            //}
            return(result);
        }
Beispiel #5
0
 public static XmlNode SelectChildNode(XmlNode node, XPathContainer XPath)
 {
     return(SelectChildNodes(node, XPath).FirstOrDefault());
 }