Quellcode durchsuchen

2008-09-19 Atsushi Enomoto <[email protected]>

	* DefaultContext.cs, Expression.cs: do not premise BaseIterator.


svn path=/trunk/mcs/; revision=113511
Atsushi Eno vor 17 Jahren
Ursprung
Commit
5a15db1e4c

+ 4 - 0
mcs/class/System.XML/System.Xml.XPath/ChangeLog

@@ -1,3 +1,7 @@
+2008-09-19  Atsushi Enomoto <[email protected]>
+
+	* DefaultContext.cs, Expression.cs: do not premise BaseIterator.
+
 2008-09-19  Atsushi Enomoto <[email protected]>
 
 	* XPathComparer.cs : no need to limit to BaseIterator.

+ 4 - 4
mcs/class/System.XML/System.Xml.XPath/DefaultContext.cs

@@ -52,9 +52,9 @@ namespace System.Xml.XPath
 			}
 			if (arg is string)
 				return ((string) arg).Length != 0;
-			if (arg is BaseIterator)
+			if (arg is XPathNodeIterator)
 			{
-				BaseIterator iter = (BaseIterator) arg;
+				XPathNodeIterator iter = (XPathNodeIterator) arg;
 				return iter.MoveNext ();
 			}
 			if (arg is XPathNavigator)
@@ -94,9 +94,9 @@ namespace System.Xml.XPath
 				return ((bool) arg) ? "true" : "false";
 			if (arg is double)
 				return ToString ((double) arg);
-			if (arg is BaseIterator)
+			if (arg is XPathNodeIterator)
 			{
-				BaseIterator iter = (BaseIterator) arg;
+				XPathNodeIterator iter = (XPathNodeIterator) arg;
 				if (!iter.MoveNext ())
 					return "";
 				return iter.Current.Value;

+ 7 - 3
mcs/class/System.XML/System.Xml.XPath/Expression.cs

@@ -114,7 +114,7 @@ namespace System.Xml.XPath
 			try
 			{
 #endif
-				BaseIterator iterResults = (BaseIterator) _expr.EvaluateNodeSet (iter);
+				BaseIterator iterResults = _expr.EvaluateNodeSet (iter);
 				if (_sorters != null)
 					return _sorters.Sort (iterResults);
 				return iterResults;
@@ -456,8 +456,12 @@ namespace System.Xml.XPath
 				if (iterResult != null)
 					return iterResult;
 				XPathNavigator nav = o as XPathNavigator;
-				if (nav != null)
-					iterResult = nav.SelectChildren (XPathNodeType.All) as BaseIterator;
+				if (nav != null) {
+					XPathNodeIterator xiter = nav.SelectChildren (XPathNodeType.All);
+					iterResult = xiter as BaseIterator;
+					if (iterResult == null && xiter != null)
+						iterResult = new WrapperIterator (xiter, iter.NamespaceManager);
+				}
 				if (iterResult != null)
 					return iterResult;
 				break;