/// <summary>
        /// GLAVNI MEHANIZAM - low-level
        /// </summary>
        /// <param name="xPath"></param>
        /// <param name="source"></param>
        /// <param name="nsSetup"></param>
        /// <param name="engine"></param>
        /// <param name="report"></param>
        /// <returns></returns>
        public static List <imbXPathQuery> xPathExecution(String xPath, XmlNode source, imbNamespaceSetup nsSetup,
                                                          queryEngine engine, Boolean trimPathWithSource)
        {
            List <imbXPathQuery> output = new List <imbXPathQuery>();
            imbXPathQuery        tmp    = null;
            XmlNode nd = null;

            if (source == null)
            {
                throw new ArgumentNullException(nameof(xPath));

                //logSystem.log("Source XML is empty", logType.Notification);
                return(output);
            }
            if (nsSetup == null)
            {
                nsSetup = new imbNamespaceSetup(source.OwnerDocument);
            }

            try
            {
                switch (engine)
                {
                case queryEngine.imbXPathQuery:
                    List <XmlNode> inp = imbXmlXPathTools.queryXPath(xPath, nsSetup.namespaceManager, source,
                                                                     trimPathWithSource);
                    foreach (XmlNode ndd in inp)
                    {
                        tmp = new imbXPathQuery(xPath, ndd);
                        output.Add(tmp);
                    }
                    break;

                case queryEngine.xmlNodeSelect:
                    XmlNodeList rez = source.SelectNodes(xPath, nsSetup.namespaceManager);
                    foreach (XmlNode ndd in rez)
                    {
                        tmp = new imbXPathQuery(xPath, ndd);
                        output.Add(tmp);
                    }
                    break;

                case queryEngine.xmlNodeSelectSingle:
                    nd  = source.SelectSingleNode(xPath, nsSetup.namespaceManager);
                    tmp = new imbXPathQuery(xPath, nd);
                    output.Add(tmp);
                    break;
                }
            }
            catch (Exception ex)
            {
                tmp         = new imbXPathQuery(xPath, null);
                tmp.report += Environment.NewLine + "Error: " + ex.Message;
                output.Add(tmp);
            }

            return(output);
        }
Пример #2
0
        /// <summary>
        /// 2014c: glavni poziv za izvrsavanje xPath upita nad izvorom - ne vrsi lokalizaciju putanje
        /// </summary>
        /// <param name="xPath"></param>
        /// <param name="source"></param>
        /// <param name="ns"></param>
        /// <param name="engine"></param>
        /// <returns></returns>
        public static imbXPathQueryCollection xPathExecute(this String xPath, IXPathNavigable _source,
                                                           imbNamespaceSetup ns = null,
                                                           queryEngine engine   = queryEngine.xmlNodeSelect)
        {
            XmlNode source = _source as XmlNode;

            if (ns == null)
            {
                ns = new imbNamespaceSetup(source.OwnerDocument);
            }
            var lst = imbAdvancedXPath.xPathExecution(xPath, source, ns, engine, false);
            imbXPathQueryCollection output = new imbXPathQueryCollection(lst);

            return(output);
        }
Пример #3
0
        /// <summary>
        /// 2013a: Vrši xPath upit i vraća onaj element koji je definisan u Index parametru.
        /// </summary>
        /// <param name="xPath"></param>
        /// <param name="source"></param>
        /// <param name="nsSetup"></param>
        /// <param name="engine"></param>
        /// <param name="trimPathWithSource"></param>
        /// <param name="index"></param>
        /// <returns></returns>
        public static XmlNode xPathExecution(String xPath, XmlNode source, imbNamespaceSetup nsSetup, queryEngine engine,
                                             Boolean trimPathWithSource, Int32 index)
        {
            List <imbXPathQuery> output = xPathExecution(xPath, source, nsSetup, engine, trimPathWithSource);

            imbXPathQuery first = output.FirstOrDefault(); //.imbGetFirstValue<imbXPathQuery>(null, false, index);

            XmlNode nd = null;

            if (first != null)
            {
                nd = first.xmlNode;
            }


            return(nd);
        }