public void TestXPathExpression()
        {
            var ctx = new XPathNamespaceContext();

            ctx.AddNamespace("n0", "samples:schemas:simpleSchema");

            var node = SupportXML.GetDocument().DocumentElement;

            var pathExprOne = XPathExpression.Compile(
                "/n0:simpleEvent/n0:nested1",
                ctx);

            var nav      = node.CreateNavigator();
            var iterator = (XPathNodeIterator)nav.Evaluate(pathExprOne);

            Assert.AreEqual(iterator.Count, 1);
            Assert.IsTrue(iterator.MoveNext());
            var result = ((IHasXmlNode)iterator.Current).GetNode();

            Assert.IsNotNull(result);

            //Console.WriteLine("Result:\n" + SchemaUtil.Serialize(result));

            var pathExprTwo = XPathExpression.Compile("/n0:simpleEvent/n0:nested1/n0:prop1", ctx);

            iterator = (XPathNodeIterator)nav.Evaluate(pathExprTwo);
            Assert.AreEqual(iterator.Count, 1);
            Assert.IsTrue(iterator.MoveNext());
            var resultTwo = (string)iterator.Current.TypedValue;
            //Console.WriteLine("Result 2: <" + resultTwo + ">");

            var pathExprThree = XPathExpression.Compile("/n0:simpleEvent/n0:nested3", ctx);

            iterator = (XPathNodeIterator)nav.Evaluate(pathExprThree);
            Assert.AreEqual(iterator.Count, 1);
            Assert.IsTrue(iterator.MoveNext());
            var resultThree = (string)iterator.Current.TypedValue;
            //Console.WriteLine("Result 3: <" + resultThress + ">");
        }
            public void Run(RegressionEnvironment env)
            {
                var ctx = new XPathNamespaceContext();
                ctx.AddNamespace("n0", "samples:schemas:simpleSchema");

                XmlNode node = SupportXML.GetDocument().DocumentElement;

                var pathExprOne = XPathExpression.Compile("/n0:simpleEvent/n0:nested1", ctx);
                var pathExprOneIterator = node.CreateNavigator().Select(pathExprOne);
                Assert.That(pathExprOne.ReturnType, Is.EqualTo(XPathResultType.NodeSet));
                Assert.That(pathExprOneIterator.MoveNext(), Is.True);
                Assert.That(pathExprOneIterator.Current.UnderlyingObject, Is.InstanceOf<XmlElement>());
                Assert.That(pathExprOneIterator.Current.NodeType, Is.EqualTo(XPathNodeType.Element));

                //System.out.println("Result:\n" + SchemaUtil.serialize(result));

                var pathExprTwo = XPathExpression.Compile("/n0:simpleEvent/n0:nested1/n0:prop1", ctx);
                var pathExprTwoIterator = node.CreateNavigator().Select(pathExprTwo);
                Assert.That(pathExprTwoIterator.MoveNext(), Is.True);
                Assert.That(pathExprTwoIterator.Current.UnderlyingObject, Is.InstanceOf<XmlElement>());
                Assert.That(pathExprTwoIterator.Current.NodeType, Is.EqualTo(XPathNodeType.Element));
                Assert.That(pathExprTwoIterator.Current.MoveToFirstChild(), Is.True);
                Assert.That(pathExprTwoIterator.Current.NodeType, Is.EqualTo(XPathNodeType.Text));
                Assert.That(pathExprTwoIterator.Current.TypedValue, Is.EqualTo("SAMPLE_V1"));

                //System.out.println("Result 2: <" + resultTwo + ">");

                var pathExprThree = XPathExpression.Compile("/n0:simpleEvent/n0:nested3", ctx);
                var pathExprThreeIterator = node.CreateNavigator().Select(pathExprThree);
                Assert.That(pathExprThreeIterator.MoveNext(), Is.True);
                Assert.That(pathExprThreeIterator.Current.UnderlyingObject, Is.InstanceOf<XmlElement>());
                Assert.That(pathExprThreeIterator.Current.NodeType, Is.EqualTo(XPathNodeType.Element));
                Assert.That(pathExprThreeIterator.Current.HasChildren, Is.True);

                //System.out.println("Result 3: <" + resultThree + ">");
            }
示例#3
0
 public virtual NodeList EvaluateXPath(string xPathExpression, Node node, XPathNamespaceContext nsctx)
 {
     _XPath.NamespaceContext = nsctx;
     return(_XPath.Evaluate(xPathExpression, node));
 }