public override NodeQueryResult EvaluateSingle(NodeQueryDefinition query, NodeQueryEvaluationContext context)
        {
            Log(query);

            Regex           regex  = new Regex(query.query);
            NodeQueryResult output = new NodeQueryResult();

            output.ResultEvaluation = regex.IsMatch(context.documentUrl);

            Log(output);

            return(output);
        }
示例#2
0
        public void Log(NodeQueryDefinition query)
        {
            if (logger != null)
            {
                logger.AppendLine("Query:");
                logger.nextTabLevel();

                logger.AppendLine(query.ToString());

                logger.prevTabLevel();

                //Log("----- query ----------");
            }
        }
示例#3
0
        public override NodeQueryResult EvaluateSingle(NodeQueryDefinition query, NodeQueryEvaluationContext context)
        {
            //var p = context.htmlDocument.DocumentNode.XPath;

            Log(query);

            var nodes = context.htmlNodes.SelectNodes(query.query);

            NodeQueryResult output = new NodeQueryResult();

            if (nodes != null)
            {
                output.ResultNodes.AddRange(nodes);
            }

            output.ResultEvaluation = output.ResultNodes.Any();

            Log(output);

            return(output);
        }
示例#4
0
        public override NodeQueryResult EvaluateSingle(NodeQueryDefinition query, NodeQueryEvaluationContext context)
        {
            Log(query);

            var indexList = imbSCI.Core.extensions.text.imbStringCommonTools.rangeStringToIndexList(query.query, context.htmlNodes.Count);

            NodeQueryResult output = new NodeQueryResult();

            foreach (Int32 i in indexList)
            {
                if (i < context.htmlNodes.Count)
                {
                    output.ResultNodes.Add(context.htmlNodes[i]);
                }
            }


            output.ResultEvaluation = output.ResultNodes.Any();

            Log(output);

            return(output);
        }
示例#5
0
 public abstract NodeQueryResult EvaluateSingle(NodeQueryDefinition query, NodeQueryEvaluationContext context);
        //    public DataPointMapperResult DPMapperResult { get; set; }

        public NodeQueryDefinition GetQueryDefinition()
        {
            NodeQueryDefinition output = new NodeQueryDefinition();

            //if (RootNode != null)
            //{
            //    var xpathSelector = RootNode.FindSelector();


            //    var xq = new NodeQueryDefinition()
            //    {
            //        query = xpathSelector.ToString(),
            //        queryType = NodeQuery.Enums.NodeQueryType.xpath,
            //        operand = NodeQuery.Enums.NodeQueryPredicateOperand.AND
            //    };
            //    return xq;

            //}



            NodeQueryDefinition q = new NodeQueryDefinition()
            {
                query     = XPathRoot,
                queryType = NodeQuery.Enums.NodeQueryType.xpath,
                operand   = NodeQuery.Enums.NodeQueryPredicateOperand.AND
            };

            output.groupQueries.Add(q);

            /*
             * if (!Class.isNullOrEmpty())
             * {
             *  NodeQueryDefinition classQ = new NodeQueryDefinition()
             *  {
             *      query = "//" + NodeName + "[@class='" + Class + "']",
             *      queryType = NodeQuery.Enums.NodeQueryType.xpath,
             *      operand = NodeQuery.Enums.NodeQueryPredicateOperand.AND,
             *      resultOperand = NodeQuery.Enums.NodeQueryResultOperand.OVERLAP
             *  };
             *  output.groupQueries.Add(classQ);
             * }*/

            if (!ID.isNullOrEmpty())
            {
                NodeQueryDefinition qID = new NodeQueryDefinition()
                {
                    query         = "//" + NodeName + "[@id='" + ID + "']",
                    queryType     = NodeQuery.Enums.NodeQueryType.xpath,
                    operand       = NodeQuery.Enums.NodeQueryPredicateOperand.AND,
                    resultOperand = NodeQuery.Enums.NodeQueryResultOperand.OVERLAP
                };
                output.groupQueries.Add(qID);
            }

            //if (output.groupQueries.Count == 0)
            //{

            //}

            return(output);
        }